タマニチェンコさんのブログ

最新一覧へ

« 前へ142件目 / 全239件次へ »
ブログ

OpenSSLでSSL証明書を発行する

ネットで色々調べても、イマイチぱっとした物が無かったので、メモる。


SSL証明書(サーバ証明書)に必要な登場人物たち


秘密鍵(+公開鍵)
RSAの鍵ペア。秘密鍵を作ると、公開鍵も同じファイルに同梱されているものらしい。少なくとも、秘密鍵ファイル(*.key)からは、いつでも公開鍵が取り出せる。
証明書の署名要求(CSR)
フォーマットにしたがって、必要事項を入力して作る。秘密鍵を利用して、著名して完成。
X.509証明書(CRT)
証明書の著名要求ファイルにCA(認証局)が著名したファイル(*.crt)。本来であれば、ベリサインなどのルート認証局に著名要求を送り、お金を払って著名してもらうのだが、自分で認証局を作って著名する、通称「オレオレ証明書」も可能。ただし、ブラウザでアクセスすると警告が出る。



オレオレ証明書ならば更に必要なもの


自称CAの秘密鍵(+公開鍵)
CA用の鍵ペア。作り方は、上記と同じ
自称CAの証明書の署名要求(CSR)
CA用の著名要求ファイル。これも上記と同じ
自称CAのX.509証明書(CRT)
署名者の秘密鍵に、自分自身の秘密鍵を使う。自分で自分を証明しているのので、著名に信頼性は無い。



作成方法
上記のファイルを次々に作成して行きます。順番は、オレオレCAの1, 2, 3、サーバ証明書の1, 2, 3という順番。

# オレオレCA(認証局)用の秘密鍵生成(秘密鍵+公開鍵)
#(パスワードが必要なら -des3 をつける)
openssl genrsa -out ca.key 1024
# オレオレCA用の証明要求書
openssl req -new -days 5000 -key ca.key -out ca.csr
# オレオレCA用の証明書発行
openssl x509 -req -in ca.csr -out ca.crt -signkey ca.key -days 5000

# サーバの秘密鍵を作成
openssl genrsa -out server.key 1024
# サーバの証明要求書
openssl req -new -key server.key -out server.csr
# サーバの証明書を発行(オレオレCAで著名)
openssl x509 -in server.csr -out server.crt -req -CA ca.crt -CAkey ca.key -days 5000

こんな感じです。秘密鍵作成時に-des3をつければ、秘密鍵をパスフレーズで暗号化するので、安全性が高まりますが、サーバ起動時にパスフレーズを求めるようになるので、運用が難しくなります。
今回は、秘密鍵が漏れた時点でローカルアタック可能なので、パスフレーズなんて気休めでしかないと言う解釈の元、パスワードをかけてません。ノーガードです。汗


apacheに設定
apacheの設定も色々ありますが、要点だけ。
上記の処理を実行すると、下記の六つのファイルができます。

ca.key ca.csr ca.crt
server.key server.csr server.crt

このうち3つを利用して、httpd.conf(とかhttpd-ssl.conf)に下記のように記述します。

SSLCertificateFile "/usr/local/etc/apache22/ssl.key/server.crt"
SSLCertificateKeyFile "/usr/local/etc/apache22/ssl.key/server.key"
SSLCACertificateFile "/usr/local/etc/apache22/ssl.key/ca.crt"

こんな感じで、ディレクトリ名はファイルを作ったディレクトリ名に置き換えればOKです。
パーミッションをwwwだけに与えるように気をつけた方が良いかも。

これで、apacheを再起動しして、https://xxxにアクセスすれば、ssl通信できるはず。(オレオレなんでブラウザからは警告が出ます)
コメントを書く
コメントを投稿するには、ログイン(無料会員登録)が必要です。