前稿で以下環境で鍵の生成と署名用のCSRの生成を行いました。
・サーバー Sakura VPS
・OS CentOS Linux 7 (Core)
・WEBサーバ httpd(Apache)
・認証局 JPRS(日本レジストリサービス)
CSRには署名内容と生成した公開鍵が内包されていることを確認しました。
この稿ではこのCSRを用いてSSL証明書を認証局に発行させ、それをサーバーに実装する手順を解説します。
1,サーバー証明書の選択と申請
Sakura VPSでは会員毎のサービス画面からSSL証明書の購入と発行手続きができます。
SSL証明書の期限が近づいてくると更新案内メールが届きます。その中にSSLサーバー証明書発行サイトのリンクが記載されています。
SSLサーバー証明書発行サイトです。
更新なので右側のサービス選択画面に入ります。
選択可能なSSL証明書のリストが表示されます。
デジタル署名の認証方式にはEV認証、企業認証、ドメイン認証という方法があります。
EV認証、企業認証は登記内容などを含めた非デジタル情報も審査して申請組織に対して厳格な審査を行います。
今回はそこまで厳格な認証は不要なのでJPRSのドメイン認証を選択します。
ドメイン認証はSSLサーバー証明書の所有者が、証明書に記載されているドメインを所有していることを証明することにより行います。所有権の確認方法はメール、もしくはWebサイトへの認証ファイル設置のため、証明書の発行が早く他の認証レベルの証明書と比較すると価格が安い点が特長です。
このページの下の方に代金の支払い方法やオプション関連の入力部があります。
支払はクレジットカードを選択しました。
ドメイン所有権確認は、先の触れたドメイン認証の手順についての選択です。
ファイル認証とメール認証があります。
ファイル認証はWEBサーバーの指定フォルダに認証局発行の認証ファイルを設置、それを認証局が巡回アクセスして確認することにより認証を行います。
所定のURLに所定のファイルがあれば、そのドメインは申請者のものに間違いない、との判断を認証局が行うわけです。
メール認証は所定のドメイン宛送信されたメールがつつがなく申請者の下に届くことでドメインの認証を行います。
今回、対象のサーバにはメールを実装していませんのでファイル認証を選択します。
さらに下部にもいくつかのオプションリストがあります。
次のオプション、ダブルアドレスオプションとは同時に2つのドメインを有効にするサービスです。
例えば hushiro.com が本来の取得ドメインであるとして、間違ってwww.hushiro.com でアクセスしてくる閲覧者もいることを想定し、
www.hushiro.com もドメインとして有効にしておこう、という機能です。
ダブルアドレスオプションの場合、SSL証明書はそれぞれのディレクトリに配置する必要があるため、このオプション選択があります。
今回のサーバーはドキュメントルートを一つしか設定していないのでダブルアドレスオプションは申し込みません。
ドキュメントルートの設定はhttpd.conf に記述があります。
最後、約款規約への同意を行います。
CSRの入力に進みます。
CSRは /etc/httpd/conf/ssl.csr というディレクトリに作成しました。
このディレクトリにserver.csr ができていますので、FTPで直接ダウンロードします。
(viを使ってメモ帳等に貼り付けても構いません)
このserver.csrをエディターで開くとCSRの内容が確認できます。
このテキストを
-----BEGIN CERTIFICATE REQUEST-----
から
-----END CERTIFICATE REQUEST-----
まですべてコピーして左のエリアに貼り付けます。
→を押すと、確認のためこのCSRに記述された署名内容が展開されます
確認画面に進みます
支払条件を含めたSSL証明書の申込内容が表示されます。
この内容で申し込む を押します。
申込終了となります。
2,認証ファイルのアップロード
各種の案内メールが届きます。
サーバ証明書申込受付完了のお知らせ
クレジットカードによる支払確認について
少し時間をおいて(体感的には1時間以内)Sakuraから「SSLサーバ証明書 認証ファイルのアップロードのお願い」という表題のメールが届きます。
この文面に認証ファイルのダウンロードページが指定されていますので、そこから認証ファイルをダウンロードします。
これが重要です。
このメール下部に認証ファイルのダウンロードリンクが記述されています。
サーバー証明書情報のサイトに遷移し、認証ファイルのダウンロードができます
ダウンロードすると「ランダムな文字列.txt」というファイルが入手できます。
この中身もファイル名と異なるランダムな文字列です。
このファイルを認証局が指定するサーバー上の指定ディレクトリに配置します。
JPRSの場合は /var/www/html/.well-known/pki-validation というディレクトリ(これは初めてJPRSの認証ファイルを使う場合新規で作成する必要があります。)にアップロードします。
ここに認証ファイルを配置すると、JPRSが巡回にきて適正なファイルが適正なドメインとディレクトリに配置されていることを確認します。
この手順を踏んで初めてSSL証明書が発行されます。
3,SSLサーバ証明書と中間証明書の入手と配置
SSLの仕組みでは、少なくともブラウザにあらかじめインストールされている「ルート証明書」とサーバー側にインストールする「SSLサーバー証明書」の2種類が必要です。
最近では、この2種類の証明書に「中間証明書」を加えて、3種類の証明書を使用することが一般的になっています。
中間証明書はルート証明書とSSLサーバー証明書の間に入って、SSL化における信頼性とセキュリティをより高いものにしています。
サーバー証明書は認証ファイルをサーバーにアップロードしてから発行されます。
原則2日以内に証明書のダウンロードサイトへのリンクが記載されたメールがきます。
(今回のケースでは丸3日後に来て、結果としてhttpsを2日止めることになってしまいましたが、、、)
サーバー証明書発行のお知らせ
サーバー証明書ダウンロードサイトのリンク
JPRS中間証明書のダウンロードサイトのリンク
JPRS中間証明書のダウンロードサイト
ドメイン認証型(DV)の中間CA証明書、PEM形式をクリックしてダウンロードします
サーバー証明書ダウンロードサイト
中間証明書は「JPRS_DVCA_G4_PEM.cer」、SSL証明書は「server.crt」というファイル名でダウンロードされます。
ファイル名は今後認証局の都合でかわるかもしれませんが、後で任意のファイル名に改変できます。
あとで中間証明書「JPRS_DVCA_G4_PEM.cer」は「internal.crt」という名前にします。
「server.crt」はそのままです。
この2つの証明書を/etc/httpd/conf/配下に作成したssl.crt というディレクトリに配置します。
/etc/httpd/conf/ssl.crt
今回は証明書の更新なのですでに/etc/httpd/conf/ssl.crtには「internal.crt」と「server.crt」があります。
勿論、これの証明書は更新をかける前にダウンロードしてバックアップとして保存しておきます。
但し/etc/httpd/conf/ssl.crt はアクセス権限の関係でFTPが利用できない設定にしてあります。
なので、vi を使ってファイルを作成します。
**************************************
[root@0196 ~]# cd /etc/httpd/conf/ssl.crt
[root@0196 conf.d]# vim internal.crt
**************************************
これで既存のinternal.crtがvi 上で展開されます。
iをたたいてインサートモードにして、既存のテキストを全部削除して、あらかじめクリップボードに貼り付けておいた新規internal.crtのテキストを全て貼り付けます。
esc+:+w+q+enter で張り付け後のファイルが保存され、編集が終了します。
もともとinternal.crtはJPRS_DVCA_G4_PEM.cerだったわけですが、この手順で全く異なるファイル名になりました。
同様に「server.crt」も新しい内容に上書き更新します。
既存の「server.crt」「internal.crt」を削除するなり、異なるファイル名にしたうえでvim で同様に新しい「server.crt」「internal.crt」を追加するやり方でも構いません。
以上の手順で/etc/httpd/conf/ssl.crt に中間証明書とSSL証明書が配置されました。
4,vhost の設定
vhostとはVirtual Hostの略。
バーチャルホストとは、一台のサーバで複数のホスト名(ドメイン名)によるサービスを提供すること。Webサーバやメールサーバを複数ドメインで共用したい場合に用いられます。
この機能はhttpd.conf 内で定義することも可能なのですが別途vhost.conf というファイルを
/etc/httpd/conf.d
配下に作成します。
*****************************
[root@xx~ conf.d]# mv vhost.conf vhost.conf.20200531
[root@xx~ conf.d]# touch vhost.conf
[root@xx~ conf.d]# vim vhost.conf
*****************************
この例では既存のvhost.conf をvhost.conf.20200531 に名前変更したうえで
touch コマンドでvhost.conf を改めて新規作成しています。
そしてvim で内容を書き込んでいます。
vhost.conf の例です
①SSLCertificateKeyFileとしてのserver.key 最初に作成した秘密鍵のルートを定義しています。
②SSLCertificateFileとしてのserver.crt SSL証明書のルートを定義しています。
③SSLCertificateChainFileとしてのinternal.crt 中間証明書のルートを定義しています
④https://dmen-kikaku0196.com にアクセスしてきたリクエストに対するhtmlファイルのルートを定義しています。
以上で関係書類の準備と配置、そして配置情報としてのvhost.conf の作成と定義が完了しました。
httpdを再起動します。
******************************
[root@xx~ conf.d]# sudo service httpd restart
******************************
あるいは
******************************
systemctl restart httpd.service
******************************
以上でApache(httpd)サーバーのSSL化、あるいはSSL証明書の更新作業は完了です。
Comments