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
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 でアクセスできるようになりました。