さくら 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 がインストールされていない場合はインストールしてください。
# cd /etc/nginx
# openssl req -new -newkey rsa:2048 -nodes -keyout server2017.key -out server2017.csr
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 []:
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 ファイルの中身をコピーして貼り付けます。
-----BEGIN CERTIFICATE REQUEST-----
(略)
-----END CERTIFICATE REQUEST-----
申し込み後しばらくすると、認証ファイルのアップロードについてのメールが送られてきます。
認証用ファイルのアップロード
さくらの会員メニューの [契約情報]-[契約サービスの確認] から認証用ファイルをダウンロードし、サーバのルート直下にアップロードします。
ブラウザから http://<ドメイン>/<認証ファイル>
にアクセスできれば OK です。
しばらくすると SSL サーバ証明書発行のメールが送られてきます。さくらの会員メニューの [契約情報]-[契約サービスの確認] から SSL サーバー証明書をダウンロードします。さらにメールに記載された URL から中間CA証明書をダウンロードしておきます。
SSLの設定
nginx 用に証明書のファイルを作成し、SSL サーバー証明書と中間 CA 証明書の内容をコピーします。ここでは /etc/nginx にserver2017.crt
というファイルを作成しています。
# vi /etc/nginx/server2017.crt
-----BEGIN CERTIFICATE-----
(SSLサーバー証明書)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(中間CA証明書)
-----END CERTIFICATE-----
nginx の設定ファイルを変更する
nginx の設定ファイルを以下のように変更します。http にアクセスされた場合は、https にリダイレクトされるようにします。
# vi /etc/nginx/nginx.conf
server {
listen 80;
listen [::]:80;
server_name _;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
server_name _;
ssl_sertificate /etc/nginx/server2017.crt;
ssl_sertificate_key /etc/nginx/server2017.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers 'ECDH !aNULL !eNULL !SSLv2 !SSLv3';
ssl_prefer_server_ciphers on;
}
- 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 を再起動します。
# nginx -t
# sytemctl restart nginx
ファイアウォールを設定する
ファイアウォールで、https を許可するように設定します。まずは現在の設定を確認します。
# firewall-cmd --list --all
public (active)
target: default
icmp-block-inversion: no
interface: eth0
sources:
services: dhcpv6-client http ssh
ports:
masquerade: no
forward-ports:
sourceports:
icmp-blocks:
rich rules:
https のサービスを許可します。
# firewall-cmd --add-service=https --noze=public --permanent
firewalld を再起動します。
# firewall-cmd --reload
ブラウザより、https でアクセスできれば成功です。
その他の設定
Google アナリティクスの変更
Google アナリティクスを設定してある場合は、サイトのプロパティ設定とビュー設定にあるウェブサイトの URL を https://
に変更します。
Google Serch Console の変更
プロパティの追加より、https://
の url を追加します。
Wordpress の変更
[設定]-[一般] の Wordpress アドレス (URL) と、サイトアドレス (URL) を https://
に変更します。