独自SSLサーバ認証局(CA)作成とサーバ証明書発行
提供: SmileLogicWiki
←Linuxメモに戻る。
目次 |
構築に関して
smileLogicのお問い合わせフォーム または、hamaguchi@smilelogic.jp でご相談を請け負います。お気軽にお問い合わせ下さい。
また、激安SSL証明書もあります。約1000円/年です。こちらを考えても良いかも。> RapidSSL
事前準備
- OpenSSL インストール
- Apache+mod_ssl or Apache-SSL インストール
作業手順(CA構築編)
事前設定(openssl.conf修正等)
/etc/ssl/openssl.conf
を修正します。最初にCA用ディレクトリを指定します。
dir = /etc/ssl/hogeCA
/etc/ssl/hogeCA の配下に certs,private,crl,newcerts のディレクトリを作成します。
mkdir -p /etc/ssl/hogeCA/certs mkdir -p /etc/ssl/hogeCA/private mkdir -p /etc/ssl/hogeCA/crl mkdir -p /etc/ssl/hogeCA/newcerts
privateには秘密鍵が置かれるので以下のようにします。
chmod 700 private
シリアルを初期化します。
echo "01" > /etc/ssl/hogeCA/serial
証明書データベースを初期化します。
touch /etc/ssl/hogeCA/index.txt
CA証明書/秘密鍵作成
自己署名済みの証明書と秘密鍵を作成します。-days 1825 はCA証明書の有効期限です。365日*5年としています。 適当に変えてください。
cd /etc/ssl/hogeCA openssl req -new -x509 -newkey rsa:2048 -out cacert.pem -keyout private/cakey.pem -days 1825
パスフレーズを聞かれます。CA局のマスターパスワードみたいなモノなので、忘れない文字列を入れてください。
Enter PEM pass phrase: ***
証明書情報が聞かれます。正しく入れてください。 ベリサインのサイトを参考にすると良いと思われます。 http://www.verisign.co.jp/server/help/csr/capache_new.html
Country Name: JP State or Province Name: Kanagawa Locality Name: hogehoge Organization Name: foo bar Organizational Unit Name: (なんかあれば) Common Name: (サーバのFQDN/www.hoge.comとか) Email Address: (あれば)
作成が終わると以下のファイルができあがります。
/etc/ssl/hogeCA/cacert.pem : 自己署名済みCA証明書 /etc/ssl/hogeCA/private/cakey.pem : CA証明書の秘密鍵
CA証明書の秘密鍵は他人にみられるとこまるので、こうします。
chown root:root /etc/ssl/hogeCA/private/cakey.pem chmod 600 /etc/ssl/hogeCA/private/cakey.pem
証明書が正しく出来たかを確認するには、以下のコマンドを発行します。
openssl x509 -in /etc/ssl/hogeCA/cacert.pem -text
ブラウザにCA証明書を組み込む
これをしないと、アクセスするたびに警告が発生します。 以下のコマンドでブラウザに取り込めるDER形式にエンコードします。
openssl x509 -inform PEM -outform DER -in /etc/ssl/hogeCA/cacert.pem -out /etc/ssl/hogeCA/hogeCAcert.der
hogeCAcert.der をブラウザからダウンロード出来るようにします。
cp /etc/ssl/hogeCA/hogeCAcert.der /var/www/
また、*.derファイルのMIMEタイプを登録する必要があります。
- /ver/www/.htaccess - AddType application/x-x509-ca-cert der - ここまで -
IE6.0の場合ですが、http://www.hoge.com/hogeCAcert.der とかアクセスすると、 ファイルのダウンロードが表示されてファイル種別:セキュリティ証明書になっています。 ここで、「開く」を選択すると「証明書」ダイアログが表示されるので「証明書のインストール」を選んでください。 以下の質問は「次へ」としてください。最後に「ルート証明書ストア」と出たら「はい」を選択すれば自己認証CAの 証明書がインストールされます。 インストールは、Opera7,Mozilla Firebird/0.6 でも確認済み
作業手順(サーバ認証編)
作成した自己認証CA局を使って、目的のサイト自体の証明書を発行します。 ここからちょっと判りにくくなります。自分の立場(演じる役)を明確にさせておきましょう。 ,役,説明 ,CA管理者,ベリサインみたいな役 ,サーバ管理者,CAにサーバが発行する証明書を署名して欲しい役 !鍵ペアと証明書要求(CSR)作成(サーバ管理者) 判りやすさを最優先にする意味で、以下のようなディレクトリを作成しました。
/etc/ssl/www.hoge.com
鍵ペアと証明書要求(CSR)ファイルを作成します。
openssl req -new -keyout /etc/ssl/www.hoge.com/hoge_key.pem -out /etc/ssl/www.hoge.com/hoge_csr.pem
証明書情報が聞かれます。
Country Name: JP State or Province Name: Kanagawa Locality Name: hogehoge Organization Name: foo bar Organizational Unit Name: (なんかあれば) Common Name: (CA局のFQDN/www.hoge.comとか) Email Address: (あれば) A challenge password: (パスワード)
作成が終わると以下のファイルができあがります。
/etc/ssl/www.hoge.com/hoge_csr.pem : サーバ証明書要求(CSR) /etc/ssl/www.hoge.com/hoge_key.pem : サーバ秘密鍵
自己認証CA局で署名(CA管理者)
では、サーバ証明書要求(CSR)を先ほど作成した自己認証CA局で署名しましょう。
openssl ca -out /etc/ssl/www.hoge.com/hoge_cert.pem -infiles /etc/ssl/www.hoge.com/hoge_csr.pem
を実行すると、CA局は「本当に署名していいの?」と確認します。迷わず[y]を選んでください。
Enter PEM pass phrase:(CA局パスフレーズ) Check that the request matches the signature Signature ok The Subjects Distinguished Name is as follows countryName :PRINTABLE:(サーバ証明書情報) stateOrProvinceName :PRINTABLE:(サーバ証明書情報) localityName :PRINTABLE:(サーバ証明書情報) organizationName :PRINTABLE:(サーバ証明書情報) commonName :PRINTABLE:(サーバ証明書情報) emailAddress :IA5STRING:(サーバ証明書情報) Certificate is to be certified until 時間 GMT (365 days)
その後、自己認証CA局で管理する?(みたいな事)を聞かれるので[y]を選んでください。 これをしないと、あとからバージョンアップが出来ない!?
1 out of 1 certificate requests certified, commit? [y/n]
証明書が正しく出来たかを確認するには、以下のコマンドを発行します。
openssl x509 -in /etc/ssl/www.hoge.com/hoge_cert.pem -text
また、現在出来上がったファイルはこんな感じとなります。
/etc/ssl/www.hoge.com/hoge_csr.pem : サーバ証明書要求(CSR) ←もういらない!? /etc/ssl/www.hoge.com/hoge_key.pem : サーバ秘密鍵 /etc/ssl/www.hoge.com/hoge_cert.pem : サーバ証明書(署名済み)
証明書と秘密鍵をサーバに組み込みます
Apache+mod_sslでもApache-SSLでも、こんな感じで登録すればオッケーです。
SSLCertificateFile /etc/ssl/www.hoge.com/hoge_cert.pem SSLCertificateKeyFile /etc/ssl/www.hoge.com/hoge_key.pem
トピックス
- Apache+mod_ssl/Apache-SSLの起動時パスフレーズを削除する方法です。
サーバ再起動時にいちいちパスフレーズを入力する必要が無くなります。 パスフレーズは、サーバ秘密鍵に書かれているのでこんな感じでRSAキーを書き込みます。
openssl rsa -in /etc/ssl/www.hoge.com/hoge_key.pem -out /etc/ssl/www.hoge.com/hoge_key.pem.nopass
Apache+mod_ssl/Apache-SSLの設定を、このファイル名に変更してください。
SSLCertificateKeyFile /etc/ssl/www.hoge.com/hoge_key.pem.nopass
- 発行後、期限切れのサーバ証明書を更新するには
同一サイトに対するサーバ証明書を発行するには、一度古くなったサーバ証明書を、CAから削除する必要があります。
openssl ca -revoke /etc/ssl/www.hoge.com/hoge_cert.pem
その後、www.hoge.com 以下のファイル群を待避させる。
mkdir /etc/ssl/www.hoge.com/2004bk/ mv /etc/ssl/www.hoge.com/* 2004bk
最後に、"作業手順(サーバ認証編)"を最初から行えば、サーバ証明書の更新が行えます。
- 自己認証CA局でより汎用的に署名するには
デフォルト設定だと、国名・地域・会社名が署名してもらいたい証明書と同一でないと弾くポリシーになっています。 このポリシーを変更するには /etc/ssl/openssl.conf を以下のようにします。
# For the CA policy [ policy_match ] countryName = supplied stateOrProvinceName = supplied organizationName = supplied organizationalUnitName = optional commonName = supplied emailAddress = optional
←Linuxメモに戻る。