情弱なもので Let's Encrypt とかいう新しくて安いものが使えず、RapidSSL ワイルドカード証明書を2万円(有効期間は1年間)で買って、諸々設定した。
これ完全に自分のためだけの備忘録で、人に読ませるつもりで書いてません。ごめんなさい。あと情報はところどころボカしてる。さすがにノーガードはどうかと思うので。
SSL 証明書を買ったショップ
安いのか高いのか分からないけど、過去に使ったことあるので。
はてブのコメントでも、そこそこ「安い」と言われていた。2017年くらいまでは。今の感覚ではどうだか分からない。
RapidSSL は過去に使ったことあるのでそれにした。1年間で2万円……。
PositiveSSL だと1年間で1.1万円……。来年はこれを使ってみようかな。
Let's Encrypt もいつかどこかで使ってみる。お金節約しないと……。
対象ドメイン
「*.clock-up.jp」の期限が近付いてきていたので、これを更新する。
作業場所
CentOS にて。
$ uname -a Linux myserver 3.10.0-862.9.1.el7.x86_64 #1 SMP Mon Jul 16 16:29:36 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux $ cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) $ openssl version OpenSSL 1.0.2k-fips 26 Jan 2017 $ httpd -v Server version: Apache/2.4.39 (IUS) Server built: Apr 2 2019 14:11:06
もうなんというか動けばいいやくらいの感覚なのでディレクトリも適当なところに作る。
$ sudo su - # cd /etc/httpd # mkdir ssl-20190902 # cd ssl-20190902
秘密鍵と CSR の作成
# openssl req -new -newkey rsa:2048 -nodes -out clock.csr -keyout clock.key -subj "/C=JP/ST=Tokyo/L=Chiyoda-ku/O=ClockUpJp/OU=Web/CN=*.clock-up.jp" Generating a 2048 bit RSA private key ..+++ .....+++ writing new private key to 'clock.key' ----- # ls -ltr total 12 -rw-r--r-- 1 root root 1704 Sep 2 23:11 clock.key -rw-r--r-- 1 root root 1009 Sep 2 23:11 clock.csr
秘密鍵の確認
本当は cat なんてしたらダメです。参考までに。
# cat clock.key -----BEGIN PRIVATE KEY----- MII.... .......... -----END PRIVATE KEY-----
CSR の確認
こっちは公開情報みたいなものなので、まぁ。
# cat clock.csr -----BEGIN CERTIFICATE REQUEST----- MII.... .......... -----END CERTIFICATE REQUEST----- # openssl req -text -noout -in clock.csr Certificate Request: Data: Version: 0 (0x0) Subject: C=JP, ST=Tokyo, L=Chiyoda-ku, O=ClockUpJp, OU=Web, CN=*.clock-up.jp Subject Public Key Info: Public Key Algorithm: rsaEncryption ..........
CSR を登録
ショップで買った RapidSSL のアクティベート画面でコモンネームと CSR の中身をまるまる登録。
証明書は admin@clock-up.jp で受け取ることにする。(これはあらかじめ G Suite でメールアドレスを作っておいた)
割とすぐにアクティベート用のメールが届く
メール本文内のアクティベートリンクを開いて、「Approve」すれば OK。
アクティベートから数分後に証明書がメールで届く
届いたメール下部には以下のような文字列がある。これが証明書。
これを /etc/httpd/ssl-20190902/server.crt として保存。
# cat server.crt -----BEGIN CERTIFICATE----- MII.... .......... -----END CERTIFICATE----- # openssl x509 -text -noout -in server.crt Certificate: Data: Version: 3 (0x2) Serial Number: 04:dc:7e:5e:d0:f5:81:fa:38:b3:e7:67:b7:3b:b4:8c Signature Algorithm: sha256WithRSAEncryption Issuer: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=RapidSSL RSA CA 2018 Validity Not Before: Sep 2 00:00:00 2019 GMT Not After : Oct 1 12:00:00 2020 GMT Subject: CN=*.clock-up.jp .... ....
中間CA証明書を取得
https://www.geotrust.co.jp/resources/rapidssl/repository/intermediate_sha2.html
このあたりから RapidSSL の中間CA証明書をコピーしてきて /etc/httpd/ssl-20190902/inca.crt として保存。
# cat inca.crt -----BEGIN CERTIFICATE----- MII.... .......... -----END CERTIFICATE----- # openssl x509 -text -noout -in inca.crt Certificate: Data: Version: 3 (0x2) Serial Number: 08:a5:a2:46:cd:4b:5c:8c:83:d7:02:b4:bb:ab:53:49 Signature Algorithm: sha256WithRSAEncryption Issuer: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert Global Root CA Validity Not Before: Nov 6 12:23:33 2017 GMT Not After : Nov 6 12:23:33 2027 GMT Subject: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=RapidSSL RSA CA 2018 .... ....
ここまでの一揃いのファイルを確認
# ls -ltr total 24 -rw-r--r-- 1 root root 1704 Sep 2 23:11 clock.key -rw-r--r-- 1 root root 1009 Sep 2 23:11 clock.csr -rw-r--r-- 1 root root 2037 Sep 2 23:31 server.crt -rw-r--r-- 1 root root 1688 Sep 2 23:34 inca.crt
ここまでファイルが揃えば Apache の設定はできる。
でも今回は Azure の Web App でも使いたいので .pfx という拡張子のファイルも作る。
さらに pfx を作る
# cat clock.key server.crt > clock.pem # openssl pkcs12 -export -in clock.pem -out clock.pfx Enter Export Password: (何かしらパスワードを入力) Verifying - Enter Export Password: (同じパスワードを入力)
pfx はパスワード設定無しでも作れるけど、それだと Azure の Web App に登録できないのでダメ。何かしら設定する。
現時点でのファイルを確認
ここまでの手順でファイルが6個できた。root ユーザが読めれば良いだけなのでパーミッション変えちゃう。
# chmod -R . 700 # ls -ltr total 24 -rwx------ 1 root root 1704 Sep 2 23:11 clock.key -rwx------ 1 root root 1009 Sep 2 23:11 clock.csr -rwx------ 1 root root 2037 Sep 2 23:31 server.crt -rwx------ 1 root root 1688 Sep 2 23:34 inca.crt -rwx------ 1 root root 3741 Sep 2 23:43 clock.pem -rwx------ 1 root root 3061 Sep 2 23:50 clock.pfx
これで Apache にも Azure の Web App にも使えるファイルが全て揃った。
Apache 設定
雰囲気的にはこんな感じの設定。Apache 2.4.8 以降では SSLCertificateChainFile 廃止されるってどこかに書いてあったけど、この設定で動いているのでそのまま動かすことにする。
.... .... <VirtualHost *:443> DocumentRoot "/var/www/hoge.clock-up.jp/public_html" ServerName hoge.clock-up.jp:443 SSLEngine on SSLCertificateKeyFile /etc/httpd/ssl-20190902/clock.key SSLCertificateChainFile /etc/httpd/ssl-20190902/inca.crt SSLCertificateFile /etc/httpd/ssl-20190902/server.crt <Directory "/var/www/hoge.clock-up.jp/public_html"> SSLOptions +StdEnvVars </Directory> </VirtualHost>
Azure Web App の設定
Azure App Services - Web App の目的のインスタンスの TLS/SSL settings という画面で pfx ファイルをアップロードできる。このときパスワードは必須。なのでパスワードの無い pfx は使えない。
あとは認識された証明書を Binding タブでサブドメインと紐づければ OK。
おしまい
証明書周りは丁寧に書こうとすると時間が無限に吹き飛ぶのでかなり雑なメモに留めてます。
気が向いたら詳細に踏み込んだ記事を書くかもしれないけど期待はしないでください。
僕のブログに来る人って、だいたい Google 検索結果から飛んでくる。(だから期待どうこうとか関係ない)