この1月の12日に Webサーバの SSL 証明書の期限が切れることをすっかり忘れてて、慌てて更新したのだけれど、記憶の新しいうちに書き記しておきたいと思います。

 

 

さくらVPS 側での作業

w800_cyber-security-3194286_1280

Image by Tumisu from Pixabay

まず、SSLサーバ証明を必要としているサーバにログインして秘密鍵を生成し、その秘密キーを使用して Certificate Signing Request (CSR: 証明書署名要求) を生成します。

この、

  • 秘密鍵
  • CSR

は、両方ともサーバ証明を必要とするサーバー自身で生成します。

 

秘密鍵の生成

VPS に SSH でリモートログインして、秘密鍵を作成します。

$ openssl genrsa -aes256 2048 > server.key

途中、秘密鍵に対するパスワードを求められますので、確認を含んで2回入力します。

 

CSR (証明書署名要求) の生成

次に、CSR を生成します。

$ openssl req -new -key server.key -out server.csr -sha256

ここで指定している server.key は、先ほど生成した秘密鍵を指定します。

コマンドを実行すると、CSR に含める情報について何点か入力する必要があります。

  • Enter pass phrase for server.key: 秘密鍵のパスワードを入力
  • Country Name (2 letter code) [AU]: 日本なので JP と入力
  • State or Province Name (full name): Osaka
  • Locality Name (eg, city): Osaka-City 等の市区町村
  • Organization Name (eg, company) : 組織名 (なくても良さげ)
  • Organizational Unit Name (eg, section): 未入力でOK
  • Common Name (e.g. server FQDN or YOUR name): www.rough-and-cheap.jp 今回取得するWebサーバーのFQDN
  • Email Address: 未入力でOK
  • A challenge password: 未入力でOK
  • An optional company name: 未入力でOK

以上で、server.csr ファイルが生成されます。

 

さくら VPS で SSLサーバ証明書 の新規登録

これまでは、Rapid SSL を使ってたんですが、さくらインターネットさんいわく、 JPRSドメイン認証型 を勧められたので、そちらで新たに登録することにします。

以下の作業は、 さくらインターネット さんの さくらのVPS Ubuntu 18.04 上で Apache 2.4 を使用して行っています。

 

さくらインターネット: SSLサーバ証明書申込み

JPRSドメイン認証型SSL の仕様と金額は以下のとおり。安いですね。

個人ブログなんで、 Let's Encript を使えばいいと思うんですが、今回はこちらでいこうと思います。

さくらSSL ドメイン認証型

さくらSSL ドメイン認証型

一番下の、「今すぐ申し込む」 ボタンから申し込みします。

途中、さくらインターネットにログインして、サービスの選択画面に移ります。

「お申し込み種別」を、新規登録、「お申し込みプラン」を、JPRSドメイン認証型・2年 にして、支払いの設定、規約の同意と進み、「CSRの入力へ進む」 をクリック。

さくらインターネット:SSLサーバ証明書申込み画面

さくらインターネット:SSLサーバ証明書申込み画面

 

CSR を貼り付けて送信

server.csr ファイルの内容を cat コマンドで中身を表示させて、それを SSL 申込画面の CSR 入力のテキストエリアにコピペします。

$ cat server.csr
-----BEGIN CERTIFICATE REQUEST-----
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-----END CERTIFICATE REQUEST-----
さくらインターネット: CSRの送信

さくらインターネット: CSRの送信

内容を確認して送信します。

 

認証ファイルのダウンロード

CSR 送信後、おおよそ10数分程度 (多少前後するかもしれません) で、さくらインターネットから

「SSLサーバ証明書 認証ファイルアップロードのお願い」

というメールが来ますので、さくらインターネットにログインして、契約情報からSSL JPRS ドメイン認証 のページを開き、「認証ファイルDL」をクリックして認証ファイルをダウンロードします。

さくらVPS: 認証ファイルのダウンロード

さくらVPS: 認証ファイルのダウンロード

そしてそのファイルを、メールの指示にしたがってドキュメントルート配下のディレクトリ、/.well-known/pki-validation/ に保存します。

例えば、ドキュメントルートが、/var/www/html の場合は、認証ファイルを /var/www/html/.well-known/pki-validation/ に保存します。

 

認証ファイルが見えるか確認

保存したあとは、SSL認証局が認証ファイルを確認して、SSL証明証が発行されるのを待つだけですが、ここで認証ファイルを見ることができるかどうか確認しておく必要があります。

特に、mod_rewrite を使用して、リクエスト URL を書き換えているような場合、認証ファイルにリクエストが通らないことも考えられます。

確認方法は、単純にブラウザのシークレットモードなどで直接 URL を叩いて見る方法です。シークレットモードを使用するのは、ブラウザキャッシュの影響を受けたくないからです。

http://申請したFQDN/.well-known/pki-validation/***.txt

でブラウザに文字列が表示されればOKです。

 

認証ファイルが見れない場合

さくらインターネットによると、以下のような例があるということです。

認証ファイルへのアクセスが拒否

.htaccess ファイルや、httpd.conf (Ubuntu であれば、/etc/apache2/site-enabled/000-default) などでファイルへのアクセス拒否の設定がされている場合。

<FilesMatch "\.(ini\.php|lng\.php|txt|gz|tgz)$">
    Order allow, deny
    Deny from all
</FilesMatch>

この場合は、FilesMatchtxt を消すことでアクセスが可能になります。

 

mod_rewrite によるリダイレクト

また同様に、mod_rewrite でリクエストURLがリダイレクトされる場合も認証を確認することができない、とされるのでアクセスできるように設定を変更する必要があります。

例として、

    :
RewriteEngine On
RewriteCond (.*) http://追加ドメイン/サブディレクトリ/$1 [R=301,L]

仮に認証ファイル名が、12345.txt とした場合、

    :
RewriteEngine On
RewriteCond %{REQUEST_URI} !=/.well-known/pki-validation/12345.txt
RewriteCond (.*) http://追加ドメイン/サブディレクトリ/$1 [R=301,L]

のようにして、%{REQUEST_URI}/.well-known/pki-validation/12345.txt の場合はリダイレクトさせないように設定します。

また、申請した FQDN が www.example.com のように www 付きで申請した場合は、

http://example.com/.well-known/pki-validation/12345.txt

https://example.com/.well-known/pki-validation/12345.txt

でアクセスするようで、www 無しの URL にアクセスした時、www 付きに URL を書きかえてリダイレクトするように設定している場合も注意が必要です。

    :
RewriteEngin On
RewriteCond %{HTTP_HOST} ^example.com$ [NC]
RewriteRule (.*) http://www.example.com/$1 [R=301,L]

または、

    :
RewriteEngin On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

のような設定の場合です。

この場合は、Rewrite の設定を一時的に無効化しておく必要があります。

 

認証ファイル確認後

 

SSLサーバ証明書のダウンロード

認証ファイルが確認されると、さくらインターネットから

JPRS SSLサーバ証明書発行のお知らせ

というメールが来ますので、その指示に従って証明書をダウンロードします。

さくらインターネット: SSL サーバ証明書

さくらインターネット: SSL サーバ証明書

 

中間CA証明書 のダウンロード

次に、SSLサーバー証明書 を発行した JPRS のサーバー証明書をダウンロード します。

JPRS中間CA証明書のダウンロード

JPRS中間CA証明書のダウンロード

 

SSL 関連ファイルをサーバーに配置

ここで、次の各ファイルが既に手元に揃っているはずです。

  • 秘密鍵ファイル (server.key)
  • SSLサーバ証明書 (server.crt)
  • 中間CA証明書 (JPRS_DVCA_G3_PEM.cer)

これらのファイルを、サーバ上に配置します。

例えば、ファイルの配置を以下のようにした場合、

ファイル種別 配置先
秘密鍵ファイル /etc/ssl/CA/private/server.key
SSLサーバ証明書 /etc/ssl/CA/certs/server.crt
中間CA証明書 /etc/ssl/CA/certs/JPRS_DVCA_G3_PEM.cer

その情報を、httpd.conf (Ubuntu であれば、default-ssl.conf) 以下のように指定しておきます。

SSLCertificateKeyFile   /etc/ssl/CA/private/server.key
SSLCertificateFile      /etc/ssl/CA/certs/server.crt
SSLCACertificateFile    /etc/ssl/CA/certs/JPRS_DVCA_G3_PEM.cer

設定ファイルに各証明書、および鍵ファイルを指定し保存したら、Apache2 を再起動します。再起動の際に、パスフレーズを求められると思うので、秘密鍵作成時のパスフレーズを入力します。

問題なく、Apache2 が起動したら、ブラウザから確認します。

Firefox や Chrome からであれば、URL のアドレス表示部にある、鍵マーク(file) をクリックすることで証明書の発行者や詳細を確認することができます。

 

まとめ

Web サーバの SSL証明書の登録や更新というと、いつもやり方や手順がよくわからなくなるので、ちょっとまとめておきました。と言ってもあくまでも自分用ですが・・

ただ、VPS であれ レンタルサーバーであれ、必要なファイルや手順はほぼ同じだと思います。

VPS は、サーバの全権限を持っていますし、SSH で接続して端末上から作業するのが前提なので、UNIX シェル に慣れてさえいれば VPS のほうが設定やトラブルシュートは楽かもしれませんね。

いずれにしても、今回は途中2時間ほど、SSL の有効期限切れの状態ができてしまっていたので、次回は更新期限忘れずに証明書を更新したいなと思います。


 

 
カテゴリー: apacheLinuxubuntu

zaturendo

中小企業社内SE。

0件のコメント

コメントを残す

アバタープレースホルダー

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