マソム自宅サーバ構築の記録
- ■
-
SSL証明書の作成
-
作成日:08/02/11
更新日:09/08/07
概要
WWWサーバ(https)、SMTPサーバ(SMTP over SSL/TLS) 、POPサーバ(POP over SSL/TLS)
等で使用する、SSL証明書を作ります。
正式には、Verisign等の認証局に署名した証明書を発行してもらいますが、自宅サーバ用なので自分で署名します。
テストや勉強用にSSL暗号化通信さえ出来ればOKだからです。
但し、自己署名だとhttpsでアクセスした場合にブラウザの警告メッセージが出ます。出さない為には自前のCA認証局を作成してその証明書をブラウザにインストールすれば良いようですが、そこまでは行いません。
なお、Apacheの自動起動に支障がないように、
鍵のパスフレーズは付けないで作成します。
openSSLのインストール
openssl-0.9.8b-12.fc7がFedora 7のRPMパッケージでインストールされているので、それをそのまま使うことにしました。
ディレクトリは/etc/pki/tls/となっているようです。 環境によって/usr/share/ssl/等のように違いますので読み替えて下さい。
作成手順
自己署名の証明書を作る方法は幾つかあるようです。
1.Fedora 7 では /etc/pki/tls/certs/Makefileを実行して、鍵と自己署名済み証明書を作れるようです。
但し、パスフレーズ付きなので作成の後 openssl コマンドでパスフレーズ無しの鍵を作っておく必要があります。
# cd /etc/pki/tls/certs/
# make 証明書ファイル名(server.crt等)
# openssl rsa -in 鍵ファイル名(server.key等) -out パスフレーズなし鍵ファイル名(server_nopswd.key等)
2.他に、次のopenssl コマンドを使って、鍵と自己署名済み証明書を作成する方法もあります。
-nodesオプションでパスフレーズは付きません。
-daysオプションで有効期間(日)を指定できます。
# cd /etc/pki/tls/certs/
# openssl req -new -x509 -nodes -keyout 鍵ファイル名(server.key等) -out 証明書ファイル名(server.crt等) -days 365
3.しかし、今回は正式な証明書を作る手順を確認しておきたいので、
プライベートCA(認証局)を作成
サーバ証明書の署名要求(CSR)の作成
署名要求(CSR)にプライベートCAが署名しサーバ証明書(CRT)を作成
の手順で作成してみることにしました。
プライベートCA(認証局)の作成
証明書に署名するCA(認証局)を作成します。上位の認証局はありませんのでルート証明書として自己署名します。
まず、openSSLの設定ファイル/etc/pki/tls/openssl.cnfのバックアップを取ってから以下の変更をしました。
[ CA_default ] x509_extensions = v3_ca
: CAとして証明書に署名できるようにする為です。(basicConstraints=CA:TRUE)
[ v3_ca ] nsCertType = sslCA, emailCA
(要検証)しかし、これが正解かはまだ未検証
・・・省略・・・
[ CA_default ]
・・・省略・・・
## x509_extensions = usr_cert # The extentions to add to the cert
x509_extensions = v3_ca
・・・省略・・・
[ v3_ca ]
・・・省略・・・
# nsCertType = sslCA, emailCA
nsCertType = sslCA, emailCA
・・・省略・・・
シェルスクリプト/etc/pki/tls/misc/CA を使ってCA環境、鍵と証明書を作成します。
無い場合は/etc/pki/CA/ディレクトリ以下が作成され、CA環境となります。
ルート証明書は /etc/pki/CA/cacert.pem、その鍵は /etc/pki/CA/private/cakey.pem となります。
# cd /etc/pki/tls/misc/
# ./CA -newca
CA certificate filename (or enter to create)
Enterキー
Making CA certificate ...
Generating a 1024 bit RSA private key
.....................++++++
...++++++
writing new private key to '../../CA/private/./cakey.pem'
Enter PEM pass phrase:CA用パスフレーズ
Verifying - Enter PEM pass phrase:CA用パスフレーズ
-----
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) [GB]:JP
State or Province Name (full name) [Berkshire]:Tokyo
Locality Name (eg, city) [Newbury]:Musashino-shi
Organization Name (eg, company) [My Company Ltd]:Mathom Factory
Organizational Unit Name (eg, section) []:Enterキー
Common Name (eg, your name or your server's hostname) []:Mathom Factory CA
Email Address []:webmaster@mathomfactory.com
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:Enterキー
An optional company name []:Enterキー
Using configuration from /etc/pki/tls/openssl.cnf
Enter pass phrase for ../../CA/private/./cakey.pem:CA用パスフレーズ
Check that the request matches the signature
Signature ok
Certificate Details:
Serial Number: 0 (0x0)
Validity
Not Before: Feb 15 13:39:02 2008 GMT
Not After : Feb 14 13:39:02 2011 GMT
Subject:
countryName = JP
stateOrProvinceName = Tokyo
organizationName = Mathom Factory
commonName = Mathom Factory CA
emailAddress = webmaster@mathomfactory.com
X509v3 extensions:
X509v3 Subject Key Identifier:
18:94:F6:AA:77:ED:F4:BE:4B:2E:D1:22:24:8A:91:FE:A4:57:3C:E4
X509v3 Authority Key Identifier:
keyid:18:94:F6:AA:77:ED:F4:BE:4B:2E:D1:22:24:8A:91:FE:A4:57:3C:E4
DirName:/C=JP/ST=Tokyo/O=Mathom Factory/CN=Mathom Factory CA/emailAddress=
webmaster@mathomfactory.com
serial:00
X509v3 Basic Constraints:
CA:TRUE
Netscape Cert Type:
SSL CA, S/MIME CA
Certificate is to be certified until Feb 14 13:39:02 2011 GMT (1095 days)
Write out database with 1 new entries
Data Base Updated
作成できたら、
取っておいたバックアップでopenSSLの設定ファイル/etc/pki/tls/openssl.cnfを元に戻します。
サーバ用CSR(証明書要求)の作成
サーバ用の鍵と証明書要求を作成します。
デフォルトの/etc/pki/tls/以下に置くことにしました。
まず、サーバ鍵を作成します。パスフレーズを外した鍵ファイルも作っておきます。
# cd /etc/pki/tls/certs/
# openssl genrsa -out www.mathomfactory.com.key -des3 1024
Generating RSA private key, 1024 bit long modulus
..........++++++
.....++++++
e is 65537 (0x10001)
Enter pass phrase for www.mathomfactory.com.key:パスフレーズ
Verifying - Enter pass phrase for www.mathomfactory.com.key:パスフレーズ
# openssl rsa -in www.mathomfactory.com.key -out www.mathomfactory.com_nopswd.key
Enter pass phrase for www.mathomfactory.com.key:パスフレーズ
writing RSA key
次に、CSR(証明書要求)を作成します。
注)Organization Name をプライベートCAと同じにしておかないと、CAで証明書を発行する時に以下のようなエラーになりました。
The organizationName field needed to be the same in the
CA certificate (Mathom Factory CA) and the request (Mathom Factory))
# openssl req -new -key www.mathomfactory.com_nopswd.key -out www.mathomfactory.com.csr
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) [GB]:JP
State or Province Name (full name) [Berkshire]:Tokyo
Locality Name (eg, city) [Newbury]:Musashino-Shi
Organization Name (eg, company) [My Company Ltd]:Mathom Factory
Organizational Unit Name (eg, section) []:Enterキー
Common Name (eg, your name or your server's hostname) []:www.mathomfactory.com
Email Address []:webmaster@mathomfactory.com
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:Enterキー
An optional company name []:Enterキー
鍵を /etc/pki/tls/private/ に移動しておきます。
# mv www.mathomfactory.com.key ../private/
# mv www.mathomfactory.com_nopswd.key ../private/
サーバ証明書の作成
CAとして証明書要求からサーバ証明書を発行します。
まず、openSSLの設定ファイル/etc/pki/tls/openssl.cnfをコピーしてサーバ証明書用の設定ファイルを作成します。
以下の変更をします。Netscapeの為の対応だそうです。
# cp /etc/pki/tls/openssl.cnf /etc/pki/tls/openssl_server.cnf
# vi /etc/pki/tls/openssl_server.cnf
・・・省略・・・
[ usr_cert ]
・・・省略・・・
# nsCertType = server
nsCertType = server
・・・省略・・・
作成したサーバ証明書用の設定ファイルを使って、証明書を作成します。
有効期限は -days 3650 で10年にしてしまいました。指定しなければ規定値の365日となります。
# cd /etc/pki/tls/certs/
# openssl ca -config /etc/pki/tls/openssl_server.cnf -in www.mathomfactory.com.csr -out www.mathomfactory.com.crt -days 3650
Using configuration from /etc/pki/tls/openssl_server.cnf
Enter pass phrase for /etc/pki/CA/private/cakey.pem:CA用パスフレーズ
Check that the request matches the signature
Signature ok
Certificate Details:
Serial Number: 1 (0x1)
Validity
Not Before: Feb 19 10:53:37 2008 GMT
Not After : Feb 16 10:53:37 2018 GMT
Subject:
countryName = JP
stateOrProvinceName = Tokyo
organizationName = Mathom Factory
commonName = www.mathomfactory.com
emailAddress = webmaster@mathomfactory.com
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Cert Type:
SSL Server
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Key Identifier:
2B:C9:0C:DA:4E:BE:0B:A1:2C:33:70:89:C7:BC:25:E6:80:6A:A4:71
X509v3 Authority Key Identifier:
keyid:18:94:F6:AA:77:ED:F4:BE:4B:2E:D1:22:24:8A:91:FE:A4:57:3C:E4
Certificate is to be certified until Feb 16 10:53:37 2018 GMT (3650 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
これで鍵 /etc/pki/tls/private/www.mathomfactory.com_nopswd.key と、証明書 /etc/pki/tls/certs/ww.mathomfactory.com.crt が出来ました。
紆余曲折Tips