さくらVPSにSSLサーバー証明書を設定する(CentOS7+nginx+RapidSSL)

スポンサーリンク

はじめに

さくらのVPSにSSLサーバー証明書を設定してサイトをhttps化するまとめです。

注意事項

  • コマンドはすべてroot権限での操作です。

環境

VPS さくらVPS 1G SSD
OS CentOS 7.3
Webサーバ nginx/1.10.2
SSLサーバ証明書 ラピッドSSL(Rapid SSL)
その他 OpenSSL 1.0.1

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 []:
メールアドレスを入力します。

2.SSLサーバー証明書の申し込み

さくらのSSLからラピッドSSLを選択して申し込みます。CSRの入力画面で先ほど作成したCSRファイルの中身をコピーして貼り付けます。

-----BEGIN CERTIFICATE REQUEST-----
(略)
-----END CERTIFICATE REQUEST-----

申し込み後しばらくすると認証ファイルのアップロードについてのメールが送られてきます。

認証用ファイルのアップロード

さくらの会員メニューから[契約情報]-[契約サービスの確認]から認証用ファイルをダウンロードしサーバのルート直下にアップロードします。
ブラウザから http://<ドメイン>/<認証ファイル> にアクセスできればOKです。

しばらくするとSSLサーバ証明書発行のメールが送られてきます。さくらの会員メニューから[契約情報]-[契約サービスの確認]からSSLサーバー証明書をダウンロードします。
さらにメールに記載されたURLから中間CA証明書をダウンロードしておきます。

3.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でアクセスできれば成功です。

4.その他の設定

Googleアナリティクスの変更

Googleアナリティクスを設定してある場合はサイトのプロパティ設定とビュー設定にあるウェブサイトのURLをhttps://に変更します。

Google Serch Consoleの変更

プロパティの追加よりhttps://のurlを追加します。

WordPressの変更

[設定]-[一般]のWordpressアドレス(URL)とサイトアドレス(URL)をhttps://に変更します。

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする