広告・Googleアドセンス728px

Article(記事) Follow Up (追記)

格安SSL証明書を更新する

投稿日:

以前格安証明書を使ったSSL化について記事を書きましたが早いものでもう1年が経とうとしています。

本日はSSL証明書の更新の仕方について説明しておきたいと思います。

証明書発行機関は沢山ありますが私はFujiSSL(https://www.ssl-store.jp/fujissl/)が年額1,080円と群を抜いて安いかったためこちらを利用しています。

全体の流れは以下の通りです。

FujiSSLで実施すること

デポジット

会員サイトにログインし、「証明書」→「証明書購入」を選択します。

今回はSSL証明書を1年更新しますので、「更新」ボタンを押下します。

するとデポジット残高が不足しているとワーニングが出ますので「デポジットをチャージ」ボタンを押下します。

私の場合は「クレジットカードで入金」を選択しました。

デポジット金額は1,080円となります。

カード情報を入力します。

これでデポジットが完了です。

購入

続いてカートに移動します。

金額を確認し、「購入を確定する」を押下します。

これでSSL種別が「Fuji-SSL-RN」、コモンネームが「アクティベート待ち」になりました。

Webサーバー側で実施すること

証明書発行

今度はWebサーバー側での実施となります。

手順としては新規発行と同じく、秘密鍵(KEY)の生成を行い、証明書署名要求(CSR)を作成し、サーバ証明書(CRT)を作成するわけですが、自分で証明書署名要求(CSR)に署名するのではなく、フジSSL側にCSRを渡し署名してもらいサーバ証明書(CRT)を発行してもらうことになります。

ということで秘密鍵を生成しましょう。

# cd /etc/ssl/certs
# pwd
/etc/ssl/certs
#
# openssl md5 * > rand.dat
# openssl genrsa -rand rand.dat -des3 2048 > kamata.key
324 semi-random bytes loaded
Generating RSA private key, 2048 bit long modulus
.......................................................................................................................................................................................................................+++
....+++
e is 65537 (0x10001)
Enter pass phrase:
Verifying - Enter pass phrase:
#

des3オプションを付けなければパスフレーズなしになりますが、セキュリティ上の観点からパスフレーズ付きで2048ビットの鍵の生成をお勧めします。

なお、パスフレーズもランダムなものにしないといけません。

cat /dev/urandom | base64 | fold -w 12 | head -1

として表示されたランダムな文字列に!、>、.、$などの記号も入れてパスフレーズを作成しましょう。
ここで作成されたパスフレーズは後で利用しますので必ず控えておいて下さい。

さて、続いてCSRの生成です。

# openssl req -new -key kamata.key > kamata.csr
Enter pass phrase for kamata.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]:Ohta-Ku
Organization Name (eg, company) [Default Company Ltd]:Kamata-Net
Organizational Unit Name (eg, section) []:Apache
Common Name (eg, your name or your server's hostname) []:blog.kamata-net.com
Email Address []: <-Enter
 
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:<-Enter
An optional company name []:<-Enter
#

できたCSRの中身を見てみましょう。

# openssl req -text < kamata.csr Certificate Request: Data: Version: 0 (0x0) Subject: C=JP, ST=Tokyo, L=Ohta-Ku, O=Kamata-Net, OU=Apache, CN=blog.kamata-net.com Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: (2048 bit) Modulus: 00:c8:ae:db:ec:30:40:8c:3c:9d:47:dd:ac:b0:17: (以下省略)

ちゃんと指定した通りにできていることが確認できました。

再びFujiSSLでの作業

証明書署名・発行

会員サイトに戻り、「証明書」→「証明書管理」を選択し下の方にコモンネームが「アクティベート待ち」となっているものについて「詳細」ボタンを押下します。

「アクティベート申請」ボタンを押下して次に進みます。

コモンネームは当サイトの「kamata-net.jp」、認証方式は「ファイル認証」を選択します。

次の画面で、生成したCSRの情報をコピー&ペーストし、住所などの必要事項を記入します。

完了すると以下のようなメールが送られてきますのでWebサーバのDocument Root配下に.well-known/pki-validationというディレクトリを作成し、添付のfileauth.txtを配置します。

https://kamata-net.jp/.well-known/pki-validation/fileauth.txtでアクセスできることを確認しておきます。

自動的にクローリングされてチェックされるので、しばらく待ちましょう。
通常5分程度でサーバー証明書がメールで送られてくるのですが、送られてこない場合何か起きているかもしれません。

調べてみると、403 Forbiddenでアクセスできていません(218.45.184.224からのアクセスは成功していますが、これは上記の確認のためのアクセスです)。

218.45.184.224 - - [22/Apr/2018:11:13:35 +0900] "GET /favicon.ico HTTP/1.1" 200 1999 - "https://kamata-net.jp/.well-known/pki-validation/fileauth.txt?s=1524363004137928274" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.189 Safari/537.36 Vivaldi/1.95.1077.60"
153.126.158.67 - - [22/Apr/2018:11:15:02 +0900] "GET /.well-known/pki-validation/fileauth.txt HTTP/1.1" 403 655 241 "-" "PEAR HTTP_Request class ( http://pear.php.net/ )"
153.126.158.67 - - [22/Apr/2018:11:15:03 +0900] "GET /.well-known/pki-validation/fileauth.txt HTTP/1.1" 403 833 241 "-" "PEAR HTTP_Request class ( http://pear.php.net/ )"
157.7.136.253 - - [22/Apr/2018:11:15:04 +0900] "GET /.well-known/pki-validation/fileauth.txt?s=152436330412802978 HTTP/1.0" 403 7771 241 "-" "-"
157.7.136.253 - - [22/Apr/2018:11:15:04 +0900] "GET /.well-known/pki-validation/fileauth.txt?s=15243633041791866920 HTTP/1.0" 403 46605 241 "-" "-"

そういえばこのドメインに対しては内部ネットワーク、もしくはリファラが特定のサイト、もしくはUser-Agentが特定ものしか許可していませんでした。

Allow from allを27行目に追記して、systemctrl restart httpdを実行してapacheの再起動を実施します。

<Directory "/wordpress/wp-content">
    SetEnvIf Referer "^https://blog.kamata-net.com" check
    SetEnvIf Referer "^https://blog.kamata-net.com" check
    SetEnvIf Referer "^http://kamata-net.com" check
    SetEnvIf Referer "^http://kamata-net.jp" check
    SetEnvIf Referer "^https://kamata-net.jp" check
    SetEnvIf Referer "^http://www.facebook.com" check
    SetEnvIf Referer "^http://facebook.com" check
    SetEnvIf Referer "^http://twitter.com" check
    SetEnvIf User-Agent "facebookexternalhit" check
    SetEnvIf User-Agent "Googlebot" check
    SetEnvIf User-Agent "GoogleImageProxy" check
    SetEnvIf User-Agent "Slurp" check
    SetEnvIf User-Agent "Yahoo" check
    SetEnvIf User-Agent "msnbot" check
    SetEnvIf User-Agent "bingbot" check
    SetEnvIf User-Agent "iPhone" check
    SetEnvIf User-Agent "iPad" check
    SetEnvIf User-Agent "Android" check
    SetEnvIf User-Agent "Smush.it" check
    SetEnvIf User-Agent "Google-Site-Verification" check
    Order deny,allow
    Deny from all
    Allow from env=check
    Allow from 192.168.0.0/24
    Allow from 218.45.184.224
    Allow from all
</Directory>

Allow from allは一時的に許可してものですので、一連の作業完了後必ず元に戻しておきましょう。

Webサーバー側の設定

証明書の配置

メールで添付されたサーバー証明書、中間CA証明書をWebサーバに移送し解凍します。

# unzip kamata-net.jp.zip
Archive: kamata-net.jp.zip
inflating: kamata-net.jp.crt
inflating: ca-bundle.ca
inflating: README.txt
#

必要に応じてファイル名の変更や適切なパーミッションを設定しましょう。Keyは秘密鍵ですから公開は不要です。中間CA証明書及びサーバ証明書はRead Onlyで公開しましょう。

# mv ca-bundle.ca kamata-net.jp.ca
# mv kamata.key kamata-net.jp.crt
# chmod 444 kamata-net.jp.ca
# chmod 444 kamata-net.jp.crt
# chmod 400 kamata-net.jp.key
# ls -l kamata-net.jp.*
-r--r--r-- 1 root root 3228 4月 29 22:35 kamata-net.jp.ca
-r--r--r-- 1 root root 1598 4月 29 22:36 kamata-net.jp.crt
-r-------- 1 root root 1743 4月 29 19:26 kamata-net.jp.key
#

Apacheの自動起動設定

実はApacheの起動用スクリプトのhttpd-ssl-pass-dialogというコマンド中のパスフレーズを変更する必要があります。

#   Pass Phrase Dialog:
#   Configure the pass phrase gathering process.
#   The filtering dialog program (`builtin' is a internal
#   terminal dialog) has to provide the pass phrase on stdout.
SSLPassPhraseDialog exec:/usr/libexec/httpd-ssl-pass-dialog

/usr/libexec/httpd-ssl-pass-dialogの4行目のパスフレーズを、先ほど設定したパスフレーズに変更します。

#!/bin/sh

#exec /bin/systemd-ask-password "Enter SSL pass phrase for $1 ($2) : "
echo "(パスフレーズ)"

ウェブブラウザから証明書の情報を確認して、期間が更新されていることを確認して完了です。

記事は以上。

この記事は役に立ちましたか?評価をお願いいたします。
[合計: 1 平均: 5]

広告336px

広告336px

-Article(記事), Follow Up (追記)
-Apache, CentOS, CentOS7.3, Security, WordPress, WP-Plugin

Copyright© 蒲田ネット , 2018 AllRights Reserved.