テスト用のSSL証明書を作成する


目的

SSLを使った各種テストをするときに、テスト用のSSL証明書があると便利なんで、作成手順をまとめました。
CA局をたてて、いろんなドメインの証明書をつくることができるのが目的です。CA局をつくって、それから、いろんなドメインの証明書を発行します。

準備

1.CentOS 6.5 など (openssl がはいっていれば、なんでもいいです。)
2.openssl

参考 http://qiita.com/mako10z/items/ef15372d4cf4621a674e

作成手順(CA局)

作業には、root 権限が必要です。
openssl の設定ファイル (CentOS では、/etc/pki/tls/openssl.cnf)は、コンパイル時に
決め打ちのようです。環境変数で、別の設定ファイルを見に行ったりできるかもしれませんが、
よくわからないので、既定のopenssl の設定ファイルに変更をかけます。
※ コードは、シェルスクリプトにすれば動くように書いてあります。ディレクトリをBにしてあります。

CA局ディレクトリ作成

まず、CA局を入れるディレクトリを作成します。(ディレクトリ名は任意です。)
とりあえず、/etc/pki/hogeCA にしました。

mkdir /etc/pki/hogeCA
mkdir /etc/pki/hogeCA/private
mkdir /etc/pki/hogeCA/newcerts

openssl.cnf 変更

/etc/pki/tls/openssl.cnf を2箇所変更します。
※ OSによって、openssl.cnf 設定ファイル名や置かれている場所は異なります。

CA局ディレクトリの指定

[ CA_default ]
dir = /etc/pki/hogeCA

POLICY の指定

いろんなドメインに対して証明書を発行できるCA局にします。
policy は、policy_match になっていますが、policy_anything に変更です。
これで、どんなドメイン(SSL用語では、common name)でも対応できます。

policy = policy_anything

CA局作成

初期値設定

echo "01" > /etc/pki/hogeCA/serial
touch /etc/pki/hogeCA/index.txt

3年間程度有効なCA局(-days 1825 の部分がその指定)つくります。
B="/etc/pki/hogeCA"
openssl  req -new -x509 -newkey rsa:2048 \
-out $B/cacert.pem -keyout \
$B/private/cakey.pem -days 1825

いろいろ設定を聞かれますが。とりあえず、下記のように答えておきました。
policy がanything とゆるいので適当でいいです。
パスワードも適当にどうぞ

Country Name (2 letter code) [XX]:JP
State or Province Name (full name) []:Tokyo
Locality Name (eg, city) [Default City]:chiyodaku
Organization Name (eg, company) [Default Company Ltd]:hoge
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:hoge.com

確認

設定がきちんとできているかを確認できます。

B="/etc/pki/hogeCA"
openssl x509 -in $B/cacert.pem -text

ブラウザ用のCA局証明書

ブラウザに取り込んでオレオレ証明書でも、エラーがでないようにするためのCA局証明書を
つくります。hogecert.der がそれです。

B="/etc/pki/hogeCA"
openssl x509 -inform PEM -outform DER -in $B/cacert.pem -out $B/hogecert.der

hogecert.der はバイナリファイルです。
取り込みは、ブラウザごとにことなります。
WEB 上に一時的にあげて、
.htaccess で、AddType application/x-x509-ca-cert der を設定して
ダウンロードするのがインストールでは便利でしょう。

証明書発行

秘密鍵とCSR(証明書要求) を一緒につくる


password は適当にいれてあとで抜きます。設定は省略可能なのですが、common name (ドメイン名)
は設定しましょう。

B="/etc/pki/hogeCA"
openssl req -new -keyout $B/hoge_key.pem -out $B/hoge_csr.pem

作業上面倒なので、秘密鍵からパスワードを除く

B="/etc/pki/hogeCA"
openssl rsa -in $B/hoge_key.pem -out $B/hoge_key.pem

CSRから証明書をつくる

B="/etc/pki/hogeCA"
openssl ca -out $B/hoge_cert.pem -infiles  $B/hoge_csr.pem

証明書を確認する

B="/etc/pki/hogeCA"
openssl x509 -in $B/hoge_cert.pem -text

web で設定する。

あとは、hoge_key.pem と hoge_cert.pem を、apache のSSL設定の中で
次のように設定します。

SSLCertificateFile /etc/pki/hogeCA/hoge_cert.pem
SSLCertificateKeyFile /etc/pki/hogeCA/hoge_key.pem