tamuraです。
前回、OpenSSLでオレオレ認証局を作りました。 今回はOpenSSLでサーバ証明書要求を作って、 オレオレ認証局に署名してもらう一連の手順をやっていきます。
最終的にApacheに組み込みます。
秘密鍵の作成
秘密鍵はパスワードで保護されます。 わかりやすいように、サーバ名や年度をファイル名に入れておきます。
参考 https://jp.globalsign.com/support/csr/04.html?service=ssl
[root@il-sus-web-www2 ssl]# mkdir /etc/pki/ssl
[root@il-sus-web-www2 ssl]# cd /etc/pki/ssl
[root@il-sus-web-www2 ssl]# openssl genrsa -out www2.il-sus-web.net.2016.key -aes256 2048
Generating RSA private key, 2048 bit long modulus
...................................................+++
...........................................................................................................................................+++
e is 65537 (0x10001)
Enter pass phrase for www2.il-sus-web.net.2016.key:(秘密鍵のパスワードを設定する)
Verifying - Enter pass phrase for www2.il-sus-web.net.2016.key:(確認)
証明書署名要求(CSR Certificate Signing Request)の作成
CSRを作ります。
[root@il-sus-web-www2 ssl]# openssl req -new -key www2.il-sus-web.net.2016.key -out www2.il-sus-web.net.2016.csr
Enter pass phrase for www2.il-sus-web.net.2016.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) []:Tokyo
Locality Name (eg, city) [Default City]:Shinjuku
Organization Name (eg, company) [Default Company Ltd]:il-sus-web
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:www2.il-sus-web.net
Email Address []:xxxxxxxxxx
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
CA(オレオレ認証局)による署名
以前作成したオレオレ認証局で署名を行います。
[root@il-sus-web-www2 ssl]# openssl ca -in /etc/pki/ssl/www2.il-sus-web.net.2016.csr -keyfile /etc/pki/CA/private/cakey.pem -cert /etc/pki/CA/cacert.pem -out www2.il-sus-web.net.2016.crt
Using configuration from /etc/pki/tls/openssl.cnf
Enter pass phrase for /etc/pki/CA/private/cakey.pem:(オレオレ認証局を作った時のパスワード)
Check that the request matches the signature
Signature ok
Certificate Details:
Serial Number: 15711698583568785532 (0xda0b2a9e1ba0207c)
Validity
Not Before: Jul 26 16:42:49 2016 GMT
Not After : Jul 26 16:42:49 2017 GMT
Subject:
countryName = JP
stateOrProvinceName = Tokyo
organizationName = il-sus-web
commonName = www2.il-sus-web.net
emailAddress = xxxxxxxxxxxxxxxx
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Key Identifier:
F0:83:63:98:50:90:26:A4:4B:4A:75:6C:22:9D:B7:E3:4B:48:E9:D8
X509v3 Authority Key Identifier:
keyid:65:2D:A0:29:6D:29:7B:B7:FD:F7:25:D7:87:78:3F:F9:26:CE:5E:16
Certificate is to be certified until Jul 26 16:42:49 2017 GMT (365 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
確認してみます。
[root@il-sus-web-www2 ssl]# ls
www2.il-sus-web.net.2016.crt www2.il-sus-web.net.2016.csr www2.il-sus-web.net.2016.key
できました。
Apacheへの組み込み
できあがった
- /etc/pki/ssl/www2.il-sus-web.net.2016.key
- /etc/pki/ssl/www2.il-sus-web.net.2016.crt
をApacheに設定します。
[root@il-sus-web-www2 ssl]# vi /etc/httpd/conf.d/ssl.conf
以下のように既存の行をコメントアウトして、今回生成したファイルを設定します。
#SSLCertificateFile /etc/pki/tls/certs/localhost.crt</span>
SSLCertificateFile /etc/pki/ssl/www2.il-sus-web.net.2016.crt
#SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
SSLCertificateKeyFile /etc/pki/ssl/www2.il-sus-web.net.2016.key
設定が終わったらApacheを再起動します。
[root@il-sus-web-www2 ssl]# service httpd restart
Redirecting to /bin/systemctl restart httpd.service
Enter SSL pass phrase for xxx.xxx.xxx.xxx:443 (RSA) : ****************
途中で秘密鍵のパスワードが聞かれるので答えておきます。 これで https でアクセスできるようになりました。