SSLサーバの証明書有効期限切れとHTTPS化
うっかりやってしまいました。
trenz.jpのSSLサーバの証明書が有効期限切れを起こしてしまいました。
昔いたアルバイト君が残してくれた手順書を読み返しながら、証明書を再取得しています。彼の手順書にはわざわざ
「また、期限前に申請しても90日以前であればその分は延長されるので、ぎりぎりまで待つ意味はない。」
という注意書きまで残してくれたのに、ぎりぎりまで怠ってしまいました。
以下に、RapidSSLで更新した際の手順を書きます。基本的には秘密鍵→CSR→CRTの順に作ります。
CSRには公開鍵と、E、CN(Common Name)、O(Organization)、L(City or Locality)、S(State or Province)、C(Country)などの情報が入っているようです。有効期限とかを入れる場所はないので毎年作り直す必要はないのかもしれませんが、特電の場合は本社を移転しているので、LがBunkyoからSumidaに変更して作り直します。
keyファイル(秘密鍵)は毎年作り直す必要はないようなので、過去に使っていたものを使います。
まず、Linuxで/etc/sslに移動して、以下の操作をします。
$ openssl req -new -key 秘密鍵ファイル名.key > ファイル名.csr
Enter pass phrase for server.key:##秘密鍵のパスフレーズ##
You are about to be asked to enter information that will be inc
into your certificate request.
What you are about to enter is what is called a Distinguished N
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) [AU]:JP
State or Province Name (full name) [Some-State]:Tokyo
Locality Name (eg, city) []:Sumida
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Tokushu Denshi Kairo Inc.
Organizational Unit Name (eg, section) []:.
Common Name (eg, YOUR name) []:www.trenz.jp
Email Address []:info@tokudenkairo.co.jp
ここまで記入すると、追加オプションをきかれますが、何も入れずにEnterを連打します。
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
こうしてCSRファイルが出来たら、
-----BEGIN CERTIFICATE REQUEST-----
MIICoTCCAYkCAQAwXDELMAkGA1UEBhMCSlAxEDAOBgNVBAgTB3htbXMuanAxDjAM
(中略)
0mwYcho=
-----END CERTIFICATE REQUEST-----
の部分をRapidSSLのフォームに貼り付けます。
RapidSSLのサーバから「どこのディレクトリに、このファイルを置くこと」というメールが来るので、指定されたディレクトリにそのファイルを置きます。すると、Webサイトの管理権限のある人だということが認識され、CRTファイルが送られてきます。
そして、CRTファイルを/etc/sslに置き、Apacheの設定の
SSLCertificateFile "/etc/ssl/ファイル名.crt"
SSLCertificateKeyFile "/etc/ssl/秘密鍵.key"
の部分にファイル名を設定してApacheを再起動します。
これで新しい証明書がインストールされます。
せっかくSSLを更新したのだから、サイトをhttpからhttpsに完全移行しようと思ったのですが、ここで一つ問題が起きました。
一般的に、httpをhttpsにリダイレクトし、wwwなしをwwwありにリダイレクトしたいと思ったとき、.htaccessは以下のように書けばいいようなのですが、
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^trenz\.jp$
RewriteRule ^(.*)$ https://www.trenz.jp/$1 [R=301,L]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://www.trenz.jp/$1 [R=301,L]
</IfModule>
https://trenz.jp/でアクセスしてきたものをhttps://www.trenz.jp/にリダイレクトしたいと思ったとき、いったんはhttps://trenz.jp/でアクセスしてからリダイレクトされるので、trenz.jpの証明書も必要になるのです。
このやり方だと、SSL証明書はwww.trenz.jpとtrenz.jpで別々に取らなければならず、2倍の費用がかかります。
どうやればよいか悩んだのですが、結局、2種類の証明書を取ることにしました。
ワイルドカードのSSL証明書*.trenz.jpは10倍以上の値段がするので、2つ取るのが一番早く簡単そうだったからです。
| 固定リンク


コメント