ConoHa の VPS を使用する際に「VPS 割引きっぷ」を使って定期契約をすると、契約期間中は「アルファ SSL」が無料で利用できるというキャンペーンが始まった。
ちょうど VPS 割引きっぷが適用されているサーバーがあったので、アルファ SSL を導入してみました。
環境
- Red Hat Enterprise Linux release 9.0 (Plow)
- OpenSSL 3.0.1 14 Dec 2021 (Library: OpenSSL 3.0.1 14 Dec 2021)
- Apache/2.4.51 (Red Hat Enterprise Linux)
暗号方式について
普段は Let's Encrypt でお手軽に証明書を発行して貰っていますが、久しぶりに自分で準備するので色々調べる機会になりました。
よく使われているRSA暗号方式からECC(楕円曲線暗号)に変えると、同程度の強度のRSAと較べて鍵長が短くなってサーバ側の鍵認証のsign処理が速くなる。
https://gato.intaa.net/net/ecdsa_ssl_cert
(中略)
ECCだと256bitでRSAの3072bit相当と言われている。
強度も高くて速度も速い ECC 256 bit が良さそうな感じですが、アルファ SSL では鍵長が 256 bit では申し込みができない模様...
CSRに含まれる公開鍵の鍵長が2047bit以下の場合お申し込みいただけません。2048bit以上をご指定ください。
https://www.toritonssl.com/support/manual/csr/csr.html
というわけで、いつも通りの RSA 2048 bit で設定を進めます。
アルファ SSL の申し込み
ConoHa のコントロールパネルから「セキュリティ」⇒「SSL」と辿り、SSL サーバー証明書を追加します。
SSL サーバー証明書 申し込み画面で、「アルファ SSL」を選択し、デュアルアクセスを「有効」、認証方式を「DNS 認証」にして次へ進みます。
※「VPS 割引きっぷ」を使用中の場合は、利用料金が 0 円になっていることも確認しましょう。
秘密鍵の作成
以降の作業ディレクトリは /etc/httpd/conf/ で行いますので、それぞれの環境に置き換えてください。
1 | # cd /etc/httpd/conf |
2048 bit でパスフレーズ付の鍵を生成します。
1 2 3 | # openssl genrsa -des3 -out server.key 2048 Enter PEM pass phrase:(任意のパスワード) Verifying - Enter PEM pass phrase:(パスワードを再度入力) |
CSR の作成
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | # openssl req -new -key server.key -out server.csr Enter pass phrase for server.key: You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- 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) []:www.example.com Email Address []:(空エンター) Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:(空エンター) An optional company name []:(空エンター) |
作成した CSR ファイルの内容を全てコピーしてください。
1 2 3 4 5 6 7 8 | # cat server.csr -----BEGIN CERTIFICATE REQUEST----- SlVHRU1VIEpVR0VNVSBHT0tPTk8gU1VSSUtJUkUgS0FJSkFSSVNVSUdZT05PIFNV SUdZT01BVFNVIFVOUkFJTUFUU1UgRlVSQUlNQVRTVSBLVU5FUlVUT0tPUk9OSSBT VU1VVE9LT1JPIFlBQlVSQUtPSklOTyBCVVJBS09KSSBQQUlQTyBQQUlQTyBQQUlQ T05PIFNIVVJJTkdBTiBTSFVSSU5HQU5OTyBHVVJJTkRBSSBHVVJJTkRBSU5PIFBP TlBPS09QSU5PIFBPTlBPS09OQU5PIENIT0tZVU1FSU5PIENIT1NVS0U= -----END CERTIFICATE REQUEST----- |
コピーした内容を CSR 貼付の欄にペーストします。
次へ進むと、申請担当者の入力画面になります。
次の画面で、申請内容を確認しましょう。
「VPS 割引きっぷ」を使用中の場合は、利用料金が 0 円になっていることも確認しましょう。
DNS 認証
ConoHa コントロールパネルの「DNS」画面から対象ドメインを開き、TXT レコードに先程の「認証 ID」を貼り付けます。
※デュアルアクセスを有効にしているので、www 有りと無し(@)の 2 種類とも登録する必要があります。
認証依頼をしてエラーが無ければ申請作業は完了です。
証明書のダウンロード
無事に証明書が発行されたら、それを配置していきます。
ConoHa コントロールパネルの「セキュリティ」⇒「SSL」の画面にある「証明書」のリンクをクリックします。
すると、ダウンロードする証明書の種類が表示されるので、「証明書(PEM)」と「中間証明書(ICA)」をダウンロードします。
ダウンロードした、「証明書(PEM)」と「中間証明書(ICA)」はテキストファイルなので、メモ帳で開き、中身を全てコピーします。
server.crt ファイルを新規作成して、そこにコピーした証明書と中間証明書を貼り付けていきます。
1 | # vi server.crt |
最初に「証明書(PEM)」、次に「中間証明書(ICA)」の順で貼り付けます。
1 2 3 4 5 6 7 8 9 10 | -----BEGIN CERTIFICATE----- 「証明書(PEM)」の内容 -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- 「中間証明書(ICA)」の内容 -----END CERTIFICATE----- |
Apache の設定
Apache の SSL 設定ファイルに、今回作成した証明書を読み込ませます。
1 2 | SSLCertificateFile /etc/httpd/conf/server.crt SSLCertificateKeyFile /etc/httpd/conf/server.key |
設定を反映するために、Apache を再起動します。
1 2 | # systemctl restart httpd ? Enter TLS private key passphrase for fe80::xxx:xxx:xxx:xxx%ens3:443 (RSA) : ************ |
すると、パスフレーズを尋ねられますので、秘密鍵の作成時に使用したパスワードを入力してください。
秘密鍵のパスフレーズを解除
このままでは面倒なので、秘密鍵のパスフレーズを解除します。
1 2 3 4 | # cp server.key server.key.org # openssl rsa -in server.key -out server.key Enter pass phrase for server.key: writing RSA key |
Apache のチューニング
1 2 3 | # httpd -v Server version: Apache/2.4.51 (Red Hat Enterprise Linux) Server built: Mar 21 2022 00:00:00 |
Apache の SSL 設定ファイルに、OCSP ステープリングの設定を追加します。
1 2 3 4 5 6 7 | SSLSessionCache shmcb:/run/httpd/sslcache(512000) SSLStaplingCache shmcb:/run/httpd/stapling_cache(128000) ↑追加 SSLEngine on SSLUseStapling on ↑追加 |
Apache の SSL 設定ファイルに、HSTS の設定を追加します。
1 | Header add Strict-Transport-Security "max-age=15552000" |
Apache を再起動し、設定を反映させます。
Qualys SSL Server Test
Qualys SSL Server Test でテストした結果は以下のようになります。
DNS CAA の警告が出ていますが、ConoHa の DNS は CAA レコードに対応していないので諦めてください…
ConoHa でサーバーを運用している場合「VPS割引きっぷ」を使った方がメリットがありますね。
VPS 割引きっぷは ConoHa カードでも購入できます!
コメント