Windows クライアント環境から CentOS + Apache 環境のウェブサーバーにサーバー証明書を設定する
前提条件として、操作コンピューターは Windows 10 の 1803 以降、ウェブサーバー側の CentOS には OpenSSL が組み込まれているものとして話を進めます。
Windows 環境に SSH クライアントがインストールされているか確認
Windows 10 1803 以降には SSH 接続クライアントがインストールされています。Powershell を起動し、SSH と入力してみてください。コマンドリストが表示されれば、SSH がインストールされていることになります。
SSH で CentOS に接続し、秘密鍵を作成
ここでは仮に接続先である CentOS の IP を 192.168.100.100、接続につかうユーザーを rootと仮定します。Powershell のコマンドで以下のように入力して CentOS に SSH 接続します。接続するとパスワードを聞かれるので、パスワードを入力します。
ssh root@192.168.100.100
root@192.168.100.100’s password: <パスワード>
接続が済んだら「秘密鍵」と呼ばれるファイルを作成します。作成するには OpenSSL というコマンドを使います。
cd /etc/httpd/csr/
openssl genrsa -des3 -out private.key 2048
Enter pass phrase for private.key: <パスフレーズ>
Verifying – Enter pass phrase for private.key: <パスフレーズ>
上記コマンドの説明ですが、まず 1 行目で作業ディレクトリに移動しています( /etc/httpd/csr/ というフォルダがあることを前提にしていますので、無いようであれば mkdir コマンドで作成してください)
2 行目が秘密鍵ファイル private.key を作成する openssl コマンドです。
3 行目と 4 行目、private.key に対してパスフレーズを設定します。パスフレーズは秘密鍵にアクセスするためのパスワードで、様々な場所で使いますので、忘れづらくかつ強固なものを設定してください。
CSR の作成
上記で作成した private.key をもとに、サーバー証明書の申請に必要な CSR と呼ばれるファイルを作成します。CSR は簡単に言うと、秘密鍵と申請者の法人情報などが格納され、暗号化されたファイルです。
先ほど同様、openssl コマンドを利用します。
openssl req -new -key private.key -out server.csr
Enter pass phrase for private.key: <パスフレーズ>
…
Contry Name: JP
State or Province Name: Tokyo
Locality Name: Minato-ku
Organization Name: Example Company
Organization Unit: Marketing Division
Common Name: www.example.org
Email Address: (無記入Enter)
…
A challenge password: (無記入Enter)
An optional company name: (無記入Enter)
1 行目は、private.key をもとに server.csr という名前の CSR ファイルを作成してください、というコマンドです。
private.key にアクセスしますので、2 行目で private.key に設定したパスフレーズの入力を求められます。
Country Name: 以降は、証明書申請社の法人情報を記入していきます。サーバー証明書の発行会社により細かいところで微妙に際がありますので、入力する値はサーバー証明書の発行会社のマニュアルをご確認ください。
一般的には、国名は JP 固定、Localiry は市区町村、組織名は登記簿に登録した法人名、コモンネームはサーバー証明書を使うウェブサーバーの FQDN、などを記載します。
コマンドの入力が終わると、server.csr というファイルが生成されます。
WinSCP などでファイルをローカルにコピー
Windows の GUI ツールである WinSCP を使って private.key と server.csr の 2 ファイルコピーをします。まずは WinSCP を Windows 環境にインストールしてください。
WinSCP に接続情報を記入します。転送プロトコルやポートバ番号、暗号化有無などは接続先サーバーに合わせて修正してください。
接続したら、先ほど作成した private.key と server.csr を、ローカルの Windows 環境にコピーします。
サーバー証明書の申請
サーバー証明書の申請には、上記でコピーした server.csr を利用します。細かい申請手順については証明書発行会社に従います。
サーバー証明書のダウンロード
申請後、審査などが行われ、サーバー証明書が発行されます。サーバー証明書とともに中間 CA 証明書という証明書を設定するのが一般的なので、証明書会社の案内に従い、必要なファイルをダウンロードします。
ここでは、発行されたサーバー証明書を server.cer、中間 CA 証明書を chain.cer と仮定します。
サーバー証明書のコピー
再度 WinSCP を利用して、ダウンロードしたサーバー証明書 server.cer と中間 CA 証明書 chain.cer、そして冒頭でローカルにコピーした秘密鍵ファイル private.key を、サーバーにコピーします。
WinSCP を起動し、証明書を置くフォルダを作成・移動します。ここでは /etc/httpd/conf/ に ssl.crt というフォルダを作成し、 /etc/httpd/conf/ssl.crt/ に、server.cer、chain.cer、private,key の 3 ファイルをコピーしたものとします。
conf ファイルの編集
WinSCP で /etc/httpd/conf.d/ssl.conf を編集で開き、証明書のファイルを指定する行を編集します。最終的に3行が以下の書式で設定されていれば OK です。
SSLCertificateFile /etc/httpd/conf/ssl.crt/server.cer
SSLCertificateKeyFile /etc/httpd/conf/ssl.crt/private.key
SSLCertificateChainFile /etc/httpd/conf/ssl.crt/chain.cer
編集が完了したら保存します。
Apache の再起動
最後にもう一度、Powershell の SSH でサーバーに接続し、ウェブサーバーをリスタートします。
apachectl stop
apachectl start
start 時にはパスフレーズを聞かれますので、再度秘密鍵のパスフレーズを入力します。
これでウェブサーバーに https:// でアクセスすると暗号化通信が利用できるようになります。