さくら VPS に SSL サーバー証明書を設定する (CentOS7 + nginx + RapidSSL)
はじめに
さくらの VPS に、SSL サーバー証明書を設定して、サイトを https 化します。
注意事項
コマンドはすべて root 権限での操作です。
目次
環境
- VPS : さくらVPS 1G SSD
- OS : CentOS 7.3
- その他 : nginx/1.10.2, ラピッドSSL(Rapid SSL), OpenSSL 1.0.1
申し込む前に用意するもの
今回は /etc/nginx
以下に、SSL 認証局へ提出するための CSR (Certificate Signing Request) を作成します。openssl がインストールされていない場合はインストールしてください。
1# cd /etc/nginx 2# openssl req -new -newkey rsa:2048 -nodes -keyout server2017.key -out server2017.csr 3 4Country Name (2 letter code) [XX]:JP 5State or Province Name (full name) []: 6Locality Name (eg, city) [Default City]: 7Organization Name (eg, company) [Default Company Ltd]: 8Organizational Unit Name (eg, section) []: 9Common Name (eg, your name or your server's hostname) []: 10Email Address []:
openssl コマンド
openssl コマンドの内容は以下の通りです。
- -newkey : 新しい秘密鍵を、RSA の 2048 ビットで作成します。
- -nodes : 秘密鍵をパスフレーズなしで作成します。
- -keyout : 秘密鍵のファイル名(任意)を指定します。(例:server2017.key)
- -out : CSRのファイル名(任意)を指定します。(例:server2017.csr)
情報の入力
CRS に含まれる情報(ディスティングイッシュネーム)を入力します。
- Country Name (2 letter code) [XX] : 国コードを入力します。日本の場合は「JP」です。
- State or Province Name (full name) [] : 都道府県名を入力します。
- Locality Name (eg, city) [Default City] : 市区町村名を入力します。
- Organization Name (eg, company) [Default Company Ltd] : 組織名を入力します。
- Organizational Unit Name (eg, section) [] : 部署名を入力します。
- Common Name (eg, your name or your server's hostname) [] : 名前またはサーバホスト名を入力します。
- Email Address [] : メールアドレスを入力します。
SSLサーバー証明書の申し込み
さくらの SSL から、ラピッド SSL を選択して申し込みます。CSR の入力画面で、先ほど作成した CSR ファイルの中身をコピーして貼り付けます。
1-----BEGIN CERTIFICATE REQUEST----- 2(略) 3-----END CERTIFICATE REQUEST-----
申し込み後しばらくすると、認証ファイルのアップロードについてのメールが送られてきます。
認証用ファイルのアップロード
さくらの会員メニューの [契約情報]-[契約サービスの確認] から認証用ファイルをダウンロードし、サーバのルート直下にアップロードします。
ブラウザから http://<ドメイン>/<認証ファイル>
にアクセスできれば OK です。
しばらくすると SSL サーバ証明書発行のメールが送られてきます。さくらの会員メニューの [契約情報]-[契約サービスの確認] から SSL サーバー証明書をダウンロードします。さらにメールに記載された URL から中間CA証明書をダウンロードしておきます。
SSLの設定
nginx 用に証明書のファイルを作成し、SSL サーバー証明書と中間 CA 証明書の内容をコピーします。ここでは /etc/nginx にserver2017.crt
というファイルを作成しています。
1# vi /etc/nginx/server2017.crt 2 3-----BEGIN CERTIFICATE----- 4(SSLサーバー証明書) 5-----END CERTIFICATE----- 6 7-----BEGIN CERTIFICATE----- 8(中間CA証明書) 9-----END CERTIFICATE-----
nginx の設定ファイルを変更する
nginx の設定ファイルを以下のように変更します。http にアクセスされた場合は、https にリダイレクトされるようにします。
1# vi /etc/nginx/nginx.conf
/etc/nginx/nginx.conf1server { 2 listen 80; 3 listen [::]:80; 4 server_name _; 5 return 301 https://$host$request_uri; 6} 7 8server { 9 listen 443 ssl http2 default_server; 10 listen [::]:443 ssl http2 default_server; 11 server_name _; 12 13 ssl_sertificate /etc/nginx/server2017.crt; 14 ssl_sertificate_key /etc/nginx/server2017.key; 15 ssl_session_cache shared:SSL:1m; 16 ssl_session_timeout 10m; 17 ssl_ciphers 'ECDH !aNULL !eNULL !SSLv2 !SSLv3'; 18 ssl_prefer_server_ciphers on; 19}
- ssl_sertificate : SSL サーバー証明書を指定します。
- ssl_sertificate_key : CSR を作成したときに作成した key ファイルを指定します。
- ssl_session_cache : SSL セッションキャッシュのサイズを指定します。
- ssl_session_timeout : SSL セッションタイムアウトの時間を指定します。
- ssl_chiphers : SSL で使用する暗号化スイートを指定します。
- ssl_prefer_server_ciphers : ON にすると、サーバの暗号化スイートを優先します。
設定ファイルが正しいことを確認し、nginx を再起動します。
1# nginx -t 2# sytemctl restart nginx
ファイアウォールを設定する
ファイアウォールで、https を許可するように設定します。まずは現在の設定を確認します。
1# firewall-cmd --list --all 2 3public (active) 4 target: default 5 icmp-block-inversion: no 6 interface: eth0 7 sources: 8 services: dhcpv6-client http ssh 9 ports: 10 masquerade: no 11 forward-ports: 12 sourceports: 13 icmp-blocks: 14 rich rules:
https のサービスを許可します。
1# firewall-cmd --add-service=https --noze=public --permanent
firewalld を再起動します。
1# firewall-cmd --reload
ブラウザより、https でアクセスできれば成功です。
その他の設定
Google アナリティクスの変更
Google アナリティクスを設定してある場合は、サイトのプロパティ設定とビュー設定にあるウェブサイトの URL を https://
に変更します。
Google Serch Console の変更
プロパティの追加より、https://
の url を追加します。
Wordpress の変更
[設定]-[一般] の Wordpress アドレス (URL) と、サイトアドレス (URL) を https://
に変更します。