Windows クライアント環境から CentOS + Apache 環境のウェブサーバーにサーバー証明書を設定する

Windows クライアント環境から CentOS + Apache 環境のウェブサーバーにサーバー証明書を設定する

前提条件として、操作コンピューターは Windows 10 の 1803 以降、ウェブサーバー側の CentOS には OpenSSL が組み込まれているものとして話を進めます。

Windows 環境に SSH クライアントがインストールされているか確認

Windows 10 1803 以降には SSH 接続クライアントがインストールされています。Powershell を起動し、SSH と入力してみてください。コマンドリストが表示されれば、SSH がインストールされていることになります。

Windows PowerShell SSH コマンド

SSH で CentOS に接続し、秘密鍵を作成

ここでは仮に接続先である CentOS の IP を 192.168.100.100、接続につかうユーザーを rootと仮定します。Powershell のコマンドで以下のように入力して CentOS に SSH 接続します。接続するとパスワードを聞かれるので、パスワードを入力します。

ssh [email protected]
[email protected]’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 に接続情報を記入します。転送プロトコルやポートバ番号、暗号化有無などは接続先サーバーに合わせて修正してください。

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:// でアクセスすると暗号化通信が利用できるようになります。