nginxにSSLサーバー証明書を設定します
今回はさくらのSSLでJPRS ドメイン認証型のサーバー証明書を購入して、さくらVPSに設置します。
WEBサーバーはnginxです。
秘密鍵の作成
秘密鍵のパスワードを設定します。
確認用がでますのでもう一度入力します。
$ openssl genrsa -des3 -out ./ssl.key 2048
$ Enter pass phrase for ./ssl.key:
$ Verifying - Enter pass phrase for ./ssl.key:
CSRの作成
作成した秘密鍵ファイルからCSRファイルを生成します。
入力必須項目は、以下6項目です。
Country Name
State or Province Name
Locality Name
Organization Name
Organizational Unit Name
Common Name
以下も表示されますが入力不要です。
Email Address
A challenge password
An optional company name
何も入力せず[Enter]キーを押して進んでください。
$ openssl req -new -key ./ssl.key -out ./ssl.csr
Enter pass phrase for ./ssl.key:
Country Name (2 letter code) [XX]:JP
State or Province Name (full name) []:Tokyo
Locality Name (eg, city) [Default City]:Shibuyaku
Organization Name (eg, company) [Default Company Ltd]:company
Organizational Unit Name (eg, section) []:secsion
Common Name (eg, your name or your server hostname) []:example.com
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
CSRが生成されるのでコピーします。
$ cat ssl.csr
-----BEGIN CERTIFICATE REQUEST-----
(ここに鍵が表示されます)
-----END CERTIFICATE REQUEST-----
サーバー証明書の発行申込
JPRS ドメイン認証型の申し込み画面で先ほどコピーしたCSRを貼り付けます。
CSRの登録が終わったらドメイン認証作業に移ります。
ドメインの公開情報(Whois)のメールアドレスにメールが届いて確認登録するか、サーバーにファイルをおいて認証してもらうかが選択できます。
今回はファイル認証の方法をとりました。
数分後にファイル設定のメールが届くのでFTPでサーバーに設置します。
指定URLでファイルの内容が表示されるかを確認してください。
指定のフォルダに認証ファイルをアップロードしてしばらくするとJPRS社にてファイル認証が行われます。
数分ほどして認証が完了すると「 JPRS SSLサーバ証明書発行のお知らせ 」のメールが届きます。
メールに記載のURLからSSLサーバ証明書のダウンロードと中間CA証明書のダウンロードを行います。
sslサーバ証明書と中間CA証明書を張り合わせます。
$ cd /etc/nginx/sites-available/
$ vi ssl.crt
#証明書を貼り付ける
$ vi ssl.crt
-----BEGIN CERTIFICATE-----
(鍵)
-----END CERTIFICATE-----
#中間証明書を貼り付ける
$ vi cushion.cer
-----BEGIN CERTIFICATE-----
(鍵)
-----END CERTIFICATE-----
#証明書と中間証明書を合わせる
$ cat ssl.crt cushion.cer > ssl.pem
nginxの設定ファイルに証明書へのパスを登録します。
$ sudo vim /etc/nginx/sites-available/wordpress.conf
server {
listen 443;
server_name example.com;
ssl on;
ssl_certificate ssl.pem;
ssl_certificate_key ssl.key;
#(略)
}
nginxを再起動します。
$ sudo systemctl restart nginx.service
これでhttpsでアクセスできるようになりました。
httpからhttpsに転送設定するには下記の設定をします。
server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri;
}
server {
listen 443;
root /var/www/html/;
index index.php index.html index.htm;
server_nam example e.com;
ssl on;
#(略)
まとめ
基本的にはapacheと同じ設定方法です。
nginxの方が設定ファイルがシンプルな分、
楽かもしれません。