前稿でインターネット上の通信におけるセキュリティの確保のうえでSSLおよびTLSが果たしている重要な役割と基本的な仕組みについて説明しました。
最終的にはサーバーに秘密鍵、配布する公開鍵、デジタル証明書を導入する必要があります。
またデジタル証明書はどのサーバーでも発行してもらえるわけではなく、一定の条件で認証を受ける必要があります。
これらの条件整備を行う手順を本稿で説明いたします。
1,想定する環境
想定する環境は以下のようになります
・サーバー Sakura VPS
・OS CentOS Linux 7 (Core)
・WEBサーバ httpd(Apache)
・認証局 JPRS(日本レジストリサービス)
2,用意しなければならないもの
・秘密鍵
・公開鍵
・JPRSからのSSL証明書
・JPRSの中間証明書
・これらのRootを定義するvhost.conf
3,秘密鍵
サーバーに秘密鍵をコマンドで生成するためにmod_sslとOpenSSLを導入します。
$ sudo yum install mod_ssl
$ sudo yum install openssl
この2つのモジュールをインストールするとコマンドで鍵の生成が行えます。
鍵を生成する前に今回行うのは鍵と証明書の更新です。つまりこれまで使っていた鍵と証明書が存在するので、それらをバックアップとして残せるようにそれぞれのファイル名を変更します。
既存の鍵と証明書は
******************************
[root@xx~]# cd /etc/httpd/conf/ssl.csr
******************************
に置いてあります。ls -l をたたくとssl.csr フォルダ内のフォルダとファイルが参照できます
******************************
[root@xx~ ssl.csr]# ls -l
total 8
-rw-r--r-- 1 root root 1013 Apr 17 2022 server.csr
-rw-r--r-- 1 root root 1766 Apr 17 2022 servername.key
******************************
2022/4/17に設置した既存のファイルがあります。
ファイル名の変更はmv コマンドで行います。
******************************
[root@xx~ ssl.csr]# mv server.csr server20230329.csr
[root@xx~ ssl.csr]# mv servername.key servername20230329.key
******************************
それぞれserver.csrがserver20230329.csr、servername.keyがservername20230329.keyに変更されます。
ちなみにservername.keyが秘密鍵、server.csrがSSL証明書の元データです。
次のコマンドを実行し、 出力 (ファイル生成マスクの値) を記録します。
******************************
[root@xx~ ssl.csr]# umask
0022
******************************
1~4桁の数字が表示されます。
ここでは0022と表示されました。
「77」「077」「0077」の 3 つ以外の場合
鍵情報の漏洩を防ぐため、 次のコマンドを実行してください (出力はありません)。
******************************
[root@xx~ ssl.csr]# umask 77
******************************
認証局に証明書を要求するために CSR(Certificate Signing Request)を事前に準備する必要があるのですが、その前に秘密鍵を生成します。
mod_sslとOpenSSLがインストールされていなければ先のyumコマンドでインストールしておきます。
以下の例では、 2048 ビットの RSA 鍵ペアを生成し、「servername.key」 (ファイル名は任意) というファイル名で保存することを示しています。
servername.keyファイルはこの次のcsrの作成時に参照しますので、わかりやすいフォルダ、あるいはcsrと同じフォルダに生成してください。
******************************
[root@xx~ ssl.csr]# openssl genrsa -aes256 2048 >servername.key
Generating RSA private key, 2048 bit long modulus
........+++
....+++
e is 65537 (0x10001)
Enter pass phrase:
Verifying - Enter pass phrase:
******************************
Enter pass phrase:は忘れないように入力してくださいCSR作成過程で必要になります。
umask 77 コマンドを実行したのでファイル生成マスクの値を復旧するため、次のコマンドを実行してください
******************************
[root@xx~ ssl.csr]# umask 0022
******************************
以上で秘密鍵の生成とssl.csrフォルダへの設置は完了です。
4,CSR
CSRとは、SSLサーバ証明書を導入するサーバ上で生成する証明書の署名リクエスト(Certificate Signing Request)です。
サーバー証明書を導入するサーバで、ウェブサイトの情報(ディスティングイッシュネーム)などを入力して生成します。
これを送付して認証局の認証を受けます。
以下の例では、 先ほど作成した「servername.key」 を利用してSHA-256をハッシュとして使ったCSRファイル「server.csr」を作成しなさい、というコマンドになります。
******************************
[root@xx~ ssl.csr]# openssl req -new -key servername.key -out server.csr -sha256
Enter pass phrase for servername.key:
******************************
Enter pass phrase for servername.key: でservername.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) []:Yokohama-city
Locality Name (eg, city) [Default City]:Asahi-ku
Organization Name (eg, company) [Default Company Ltd]:KikakuKobo
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:kikakuKobo.com
Email Address []:
******************************
Common Nameが重要です。ドメイン認証の場合、ここに認証を受けるドメイン名を定義します。
次いで以下のプロファイル指定を求められますが、必須ではありません。
******************************
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
******************************
次いでCSRの中身を確認します。
$ openssl req -noout -text -in server.csr
*************************
Certificate Request:
Data:
Version: 0 (0x0)
Subject: C=JP, ST=Yokohama-city, L=Asahi-ku, O=kikakuKobo, CN=kikakuKobo.com
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
00:a9:e8:53:f7:11:67:94:af:ab:2b:5b:d5:9f:69:
・・・・・・・・
d2:6e:b8:b3:0f:04:73:2d:d0:3a:48:47:93:91:94:
52:c1
Exponent: 65537 (0x10001)
Attributes:
a0:00
Signature Algorithm: sha256WithRSAEncryption
76:5k:9c:99:0d:8c:46:96:04:68:63:8f:91:9b:42:dd:80:3f:
・・・・・・・・・
95:e0:b6:4c
**************************
署名アルゴリズム( Signature Algorithm)の中に公開鍵(Public Key Algorithm)が内包されていることがわかります。
ここまで表示されたらserver.csr が指定ディレクトリに作成されています。
今回はCSR保管用に /etc/httpd/conf/ssl.csr というディレクトリを作成し、この中にserver.csr と servername.key を収容しました。
servername.key はそれとわかるディレクトリを用意すべし、とのネット情報が多かったのですが
「$ openssl req -new -key servername.key -out server.csr -sha25」で引用がしやすいように同一ディレクトリにしました。
こうして作成したCSRを認証局に送って認証を受け、SSL証明書を取得します。
ここから先は次稿で解説します。
Comments