OpenSSLのバージョンを確認
# openssl version
OpenSSL 1.0.2k-fips 26 Jan 2017
秘密鍵ファイルの作成
秘密鍵を作成するディレクトリの作成
# cd /etc/ngnx
# mkdir ssl
# cd ssl
秘密鍵の作成
# openssl genrsa -des3 -out ./yourdomain.com.key 2048
Enter pass phrase for ./yourdomain.com.key:******** ← パスワードを入力+エンター
Verifying - Enter pass phrase for ./yourdomain.com.key:******** ← 再度パスワードを入力+エンター
キーファイル作成時に入力したパスワードはCSR作成時に必要ですので忘れないように控えておきましょう。
作成されたファイルの確認
# ls -l ./
total 4
-rw-r--r-- 1 root root 1743 Aug 28 11:32 yourdomain.com.key
yourdomain.com.keyというファイルが作成されました。
CSRファイルの作成
# openssl req -new -key ./yourdomain.com.key -out ./yourdomain.com.csr
Enter pass phrase for ./yourdomain.com.key:******** ←キー作成時パスワードを入力
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:JP
State or Province Name (full name) []:Fukuoka
Locality Name (eg, city) [Default City]:Fukuoka-shi
Organization Name (eg, company) [Default Company Ltd]:mycompanyname.inc
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:*.yourdomain.com
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
項目 | 説明 | 入力例 |
Country Name | 国を示す2文字のISO略語 | JP |
State or Province Name | 都道府県 | Fukuoka |
Locality Name | 市区町村 | Fukuoka-shi |
Organization Name | 組織(会社)名 | Fullstack.inc |
Organizational Unit Name | 部署名 | 未入力でもOK |
Common Name | 対象とするドメイン | yourdomain.com ワイルドカードの場合↓ *.yourdomain.com |
Email Address | サーバー管理者のメールアドレス | 未入力でもOK |
A challenge password | 未入力でもOK | |
An optional company name | 未入力でもOK |
オプションのチャレンジパスワードが求められますが、このパスワードは CSR と、ユーザーと CA の間のトランザクションのみに適用されるものなので未入力でOKです。
全ての内容を入力し終えたらcsrファイルが作成されます。
# ls -l ./
total 8
-rw-r--r-- 1 root root 1005 Aug 28 12:11 yourdomain.com.csr
-rw-r--r-- 1 root root 1743 Aug 28 11:32 yourdomain.com.key
SSLサービス会社へ証明書の発行申し込み
生成したCSRで申込みをいます。
yourdomain.com.csrファイルの—-BEGIN CERTIFICATE REQUEST—–から—–END CERTIFICATE REQUEST—–までのテキストをSSLサービス会社に申請する際に使います。
# less yourdomain.com.csr
—-BEGIN CERTIFICATE REQUEST—–
………………………………………………………
…………英数字の文字列…………
………………………………………………………
—–END CERTIFICATE REQUEST—–
SSLサービスへの申込みはサービス提供会社ごとに違いますが、おおよそ次のステップで申請が完了します。
STEP1 CSRの貼り付け
サーバの種類をその他を選択
作成したCSRをペースト(BEGINの行を含む)
STEP2 お客様情報入力
受信のためのメールアドレスを選択
その他情報の入力
STEP3 確認画面
内容を確認し登録ボタンをクリック
STEP4 完了
認証機関より承認確認メール受信
申請完了後にメールが届くので、メール内のリンクに承認するための説明とリンクが送られてくるので、その内容に従って、承認完了処理を行います。
証明書ファイルのメール受信
承認完了後再びメールが届きます。メールには以下の情報が記されています。
(添付ファイルに添付されている場合もあります)
Web Server CERTIFICATE SSLサーバ証明書
INTERMEDIATE CA 中間証明書
pemファイルの作成
サーバー証明書と中間証明書を結合してpemファイル作成します。
/etc/nginx/ssl/example.com.pemを作成しました。
Nginxの設定
設定ファイルをviでオープン
# vi /etc/nginx/sites-available/default
SSLの設定内容
.....
server {
listen 443;
server_name yourdomain.com;
ssl on;
# 秘密鍵
ssl_certificate_key /etc/nginx/ssl/yourdomain.com.key.rsa;
# 証明書
ssl_certificate /etc/nginx/ssl/yourdomain.com.pem;
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;
.........
}
nginxの設定状態を確認
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Nginxの再起動
$ sudo systemctl restart nginx
ブラウザからアクセス確認
https://申請したドメインでブラウザからアクセスしてSSLが有効状態で表示されたらOKです。
nginxにSSLファイルを指定後に起動(再起動)したらエラーメッセージが表示される場合
$ sudo restart nginx.service
Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details.
この場合はSSLのkeyファイル作成時に設定したパスワードをnginx起動時に入力しなければなりません。
自動入力する設定についてこちらの記事で解説していますので、参考にしてください。
以上でSSL証明書を発行してAWS EC2のNginxに設定する方法の完了です。おつかれさまでした!!