カテゴリー: 手順書,
最近の事情により導入依頼が多いSSL。数年前から「将来絶対必須なんでつけといたほうがいいですよ?」「うーんお金かかるからいいや」というお客様たちが変に焦ってても「だから言ったでしょ?」って冷たくしたくなる気持ちを誰かにわかってほしかったり。
というわけで、さくらのVPSとかに SureServer for SAKURA を導入する手順メモです。作業環境は Windows 10。
お客様へ作業事前にDN情報を確認しましょう。
あとOpenSSLは最新版にしておいたほうがいいです、脆弱性とかなんかあったので。
ファイアウォールでHTTPS通信が許可されているか確認
firewall-cmd --list-all
画面だとこんな感じです
「services:」 に「https」が含まれていない場合はファイアウォールに登録する。
vi /etc/firewalld/zones/public.xml
下記を追加します。
<service name="https"/>
再起動して再確認
firewall-cmd --reload
firewall-cmd --list-all
ポート443 が開いてるかどうか確認
ss -t -l -n
任意の名前「ssl_certs」ディレクトリを作成してひとまとめにしてます。複数サイトを動かしている場合、初回のみの作業となります。
SSLサービスへ申し込むために必要なものをそろえていきます。
mkdir /etc/nginx/ssl_certs
cd /etc/nginx/ssl_certs
touch sha1.dat
openssl sha1 * > sha1.dat
秘密鍵ファイル「.key」を新規作成。下記実行後、パスフレーズ入力。
openssl genrsa -des3 -out example.key -rand sha1.dat 2048
秘密鍵をそのまま利用すると、nginx再起動時にパスフレーズを入力できずに起動に失敗するので、鍵ファイルを復号化しておきます。
openssl rsa -in example.key -out example.decrypted.key
下記実行後、パスフレーズ入力し、DN情報を入力。
openssl req -new -key example.key -out example.2018.csr
※ 以下の3つはエンターキーでスキップ
取得したCSRをさくらの申込書画面で貼り付けます。
その後案内のメールが来くるまで休憩です
メールが来たあとの作業です。
さくらの手順書PDFに載っているものだと動きませんでした。ここらへんは謎です・・・
✗ https://www.cybertrust.ne.jp/sureserver/download/root_ca/PUBCAG3_sha2.txt
○ https://jprs.jp/pubcert/service/certificate/
さくらより送られてくるメール内の説明をたどって取得します。「準備中」になってるほうをクリック
※ 認証ファイルは「123456789123456789123456789123456789.txt」みたいなテキストファイルでした。クローラがアクセスする指定場所に設置します。
/usr/share/nginx/example.com/public_html/.well-known/pki-validation
とりあえずブラウザで確認してみるのをおすすめします。
当然ですがクローラは「wwwなし」のほうへアクセスし認証を行いますので、「wwwなし」から「wwwあり」へリダイレクトがかかっている場合はリダイレクト解除の必要があります。
※リダイレクト解除されない場合に試す方法
以上、30分程で認証が完了し、認証ファイルをダウンロードしたページにて証明書ファイルがダウンロードできるようになります。
サーバー証明書「server.crt」をダウンロードしたら、「.well-known」以下は不要のため削除します。
JPRS_DVCA_G2_PEM.cer を ssl_certsへアップロード
「server.crt」を「example.2018.crt」にリネーム、ssl_certsへアップロード
中間証明書とサーバー証明書を単純連結します
※ 中間証明書がPEM形式だったのでpemで出力
※ 試しにcrtで出力してみたけどプライバシーエラーになった
cd /etc/nginx/ssl_certs
cat example.2018.crt JPRS_DVCA_G2_PEM.cer > example.2018.pem
改行コードをチェック&2つのpemファイルを編集
vi example.2018.pem
※ 改行位置で「^M」などある場合は、viで削除する
「—–END CERTIFICATE—–—–BEGIN CERTIFICATE—–」
を
「—–END CERTIFICATE—–
—–BEGIN CERTIFICATE—–」
となるように改行する。
※ 上側がサーバー証明書、下側が中間証明書と認識されます
反映テスト
nginx -t
systemctl stop nginx
systemctl start nginx
証明書を作成し終わったらNginx側へ反映します。
/etc/nginx/conf.d/example.com.conf
server {
# ポート変更
listen 443 ssl;
server_name example.com;
root /usr/share/nginx/example.com/public_html;
# 下記を追加
ssl_certificate /etc/nginx/ssl_certs/example.2018.pem;
ssl_certificate_key /etc/nginx/ssl_certs/example.decrypted.key;
ssl_session_timeout 5m;
}
# fastcgi を使っている場合は下記1行を追加
location ~ \.php$ {
fastcgi_param HTTPS on;
}
サイトへ https で表示してみて、http混在問題などあれば修正していきます。終わりましたら必要に応じて、httpへのアクセスをhttps側へリダイレクトします。
server {
listen 80;
server_name example.com;
root /usr/share/nginx/example.com/public_html;
return 301 https://$host$request_uri;
}
www有り無しにお気をつけて。httpsかつwwwありなしでリダイレクトの処理も必要とかあるかもしれません、
以上SSL導入メモでした、しかし本番環境反映時に失敗してNginxのインデックスページが表示されると焦るよねホント・・・