09/30 PowerNaviオンラインショップのSSL証明書が期限切れに。あわてて再インストール

PowerNaviオンラインショップはお客様の個人情報を扱っているので、当然ながらSSLで暗号化・実在証明をしている。そのSSL証明書の期限が切れてしまった。1か月ぐらい前に販売代理店から期限切れのお知らせメールが来ていたが、僕あてではなく技術者のメールアドレスに届いていた。彼から口頭で報告はあったのだが、すっかり忘れて放置していた。

そうしたら9月29日の夜、購入しようとしたお客様から、「Webページで提示されたセキュリティ証明書は、有効期限が切れていますと出ています。大丈夫ですか。」というお問い合わせをいただいた。あわててオンラインショップにアクセスしたところ

SSL_NG

という表示。これはオンラインショップとしては最悪だ。

ディファインオンラインストアでRapidSSLを再購入する

すぐにSSL証明書を購入したディファイン合同会社にアクセスしたが、どこから更新手続きをすれば良いのかわからない。遅い時刻だったので、フォームから更新したい旨を送り、トップページとFacebookページにご注意を掲載した。

そうしたら数時間後には担当者からディファインSSLストアのURLが送られてきた。ただ、その時点で酒を飲んでいたので購入やインストールは危険と判断し、おとなしく寝ることに。

30日の朝、出社してディファインSSLストアに再度アクセスし、RapidSSL jpドメイン/汎用・属性型 3年を購入。支払いはPayPalを選んだ。税込み7,560円なり。探せばもっと安いSSL証明書もあるけれど、RapidSSLはGeoTrustのシールが使えるので、そこそこ顧客からの信頼は得られるのではないだろうか。そしてディファインはRapidSSLの販売価格が、自分の探した限り一番安い。

デイファインSSLストア

SSL証明書は、暗号化という点ではどこも違いがない。値段の差はブランドの信頼度と、発行先の存在証明をどこまで厳密に取っているかによる。一番厳重なのは登記簿謄本と電話による問い合わせを経て発行されるEV認証というもの。アドレスバーが緑色になるという特徴がある。これは年間10万円以上するので、PowerNaviとしては無理。もちろん今日申請して今日発行というわけにもいかない。手軽なものとしてはドメイン名が実在することだけを証明するドメイン認証型。安価だし、申し込んでから最短2分で発行される。弊社としてはもっぱらこちら。その中でも特に安価なRapidSSLをここ数年使っている。

ここから先は、どのSSL証明書を選んでもそれなりに面倒な手順となる。

秘密鍵・公開鍵・CSRを作成する

まず、自サーバーの秘密鍵・公開鍵ペアを作る。実は以前作った鍵ファイルがあるので、それを使えば良かったのだが知らずに新規作成してしまった。

% openssl genrsa -des3 2048 > powernavi2015.key
Generating RSA private key, 2048 bit long modulus
.......................................+++
.......................................................................................................................................................+++
e is 65537 (0x10001)
enter pass phrase:************ ←パスフレーズ入力
Verifying - Enter pass phrase:************ ←パスフレーズを再度入力

次にCSRを作成する。CSR(Certificate Signing Request:署名要求)は公開鍵の情報の他、作成時に指定されたディスティングイッシュネーム(組織名や組織の所在地などの情報)が含まれているもの。

$ openssl req -new -key powernavi2015.key -out powernavi2015.csr -sha1
Enter pass phrase for powernavi2015.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) []:Tokyo
Locality Name (eg, city) [Default City]:Shinjuku
Organization Name (eg, company) [Default Company Ltd]:ERDE Co., Ltd.
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:powernavi.erde.co.jp
Email Address []:powernavi@erde.co.jp

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: ←何も入力せずにEnter
An optional company name []: ←何も入力せずにEnter

ここで間違えていけないのはコモンネーム(ホストネーム)だ。powernaviの場合、powernavi.erde.co.jpであってwww.erde.co.jpではない。www.erde.co.jpで申請してしまうとpowernavi.erde.co.jpの証明には使えなくなってしまう。

powernavi2015.csrが作成されるので、その内容をディファインから送られてきたメールにあるアクティベーションページの所定欄にペーストする。

アクティベーションが完了すると、SSL証明書がメールで送られてくる。これをコピー&ペーストして

powernavi.crt

というファイル名で保存する。これがSSL証明書だ。

SSL証明書は秘密鍵とペアで働くが、そのままだとhttpdを再起動するたびにパスフレーズの再入力を求められ、面倒だ。そこでパスフレーズを埋め込んでしまう。

$ openssl rsa < 2015powernavi.key > key_nopass.pem
Enter pass phrase:************ ←パスワード入力
writing RSA key

そして、中間証明書ファイルを作る。RapidSSLの中間証明書はRapidSSLのサイトに公開されているので、それをコピー&ペーストすればいい。ところが、このルート・中間・Webサーバという3段階の証明では、古いブラウザ(携帯電話など)だと古いルート証明書しか入っていないため、SSL証明書を認証できないことがある。より多くのユーザ環境に対応するためにはRapidSSLの1段階上位の証明機関が発行した証明書を併用する4階層クロスルート対応の中間証明書をインストールすることが推奨されている。

まずRapidSSLの中間証明書をコピー&ペーストし、それにつなげて上位証明機関であるGeoTrustの中間証明書をコピー&ペーストする。単純に

-----BEGIN CERTIFICATE-----
MIIDfTCCAuagAwIBAgIDErvmMA0GCSqGSIb3DQEBBQUAME4xCzAJBgNVBAYTAlVT
MRAwDgYDVQQKEwdFcXVpZmF4MS0wKwYDVQQLEyRFcXVpZmF4IFNlY3VyZSBDZXJ0
aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDIwNTIxMDQwMDAwWhcNMTgwODIxMDQwMDAw
(中略)
AHbhEm5OSxYShjAGsoEIz/AIx8dxfmbuwu3UOx//8PDITtZDOLC5MH0Y0FWDomrL
NhGc6Ehmo21/uBPUR/6LWlxz/K7ZGzIZOKuXNBSqltLroxwUCEm2u+WR74M26x1W
b8ravHNjkOR/ez4iyz0H7V84dJzjA1BOoa+Y7mHyhD8S
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEpjCCA46gAwIBAgIQKByJKWYUQ4BCY1U6MkCuszANBgkqhkiG9w0BAQsFADCB
mDELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsT
MChjKSAyMDA4IEdlb1RydXN0IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25s
(中略)
TqY3Cp6TXodb6ZDWqLZlCI1hSeuDIKldGxZgYmsvVPtaAg16J+JL4QUUwuTp+XDA
2fc0ZQ6ikUusKPK3CA+Yytc+cLbIC/GLnFH4xhBs0lNPYowRAD6I37/m0sxwve0l
nPvdJAq9WZFKQgM4EnEyiHagjny7Mu+IKhvUam9QuVJni6sw+h/94ySa
-----END CERTIFICATE-----

とテキストファイルである証明書を1個のファイルにしただけ。

ファイルが全部揃ったら、powernaviの場合はpowernavi.sslというファイルから2014powernavi_sslフォルダにシンボリックリンクを張ってあったのを2015powernavi_sslフォルダに貼り直す。

ln -s 2015powernavi_ssl powernavi.ssl

httpdを再起動すれば新しいSSL証明書が有効になり、以前のようにリンクボタンをクリックするだけでPowerNaviオンラインショップにアクセスできるようになる。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください