[[PageOutline]] = mod_ssl = * mod_ssl の設定 * [http://d.hatena.ne.jp/kiririmode/20081214/p1 mod_ssl のディレクティブ - 理系学生日記] = SSL 証明書の作り方 = == with ubuntu hardy == * install openssl * /etc/ssl/openssl.cnf /usr/lib/ssl/misc/CA.sh を適宜変更 * 対象は 0.9.8g-4ubuntu3.7 -> [2] * [3] * CA.sh を使った場合、カレントディレクトリに「demoCA」というディレクトリが作られる * 違うディレクトリ・ファイル名にする場合は、45行目前後を変更する (今回はデフォルトのまま) {{{ CATOP=./demoCA CAKEY=./cakey.pem CAREQ=./careq.pem CACERT=./cacert.pem }}} === rootCA === * この作業はルート認証局を作る時に一回だけ行う * rootCA: $ sudo /usr/lib/ssl/misc/CA.sh -newca {{{ Country Name (2 letter code) [AU]:JP State or Province Name (full name) [Some-State]:Ibaraki Locality Name (eg, city) []:Tsukuba Organization Name (eg, company) [Internet Widgits Pty Ltd]:Private CA for mitty.jp Organizational Unit Name (eg, section) []: Common Name (eg, YOUR name) []:Private CA for mitty.jp Email Address []: }}} * ここで、「Organization Name」は後で作るサーバ証明書とは違う物にしておく * 「Common Name」はサーバ証明書ではサーバのFQDNだが、ルートCA証明書の場合はドメインでなくて良い * rootCA: $ sudo openssl x509 -inform pem -in ./demoCA/cacert.pem -outform der -out ./demoCA/cacert.der * ブラウザインポート用のルートCA証明書(任意) === 新しい証明書 === * newserver <= 新しいSSL証明書を作成したいサーバ * rootCA <= ルートCA証明書を保持しているルート認証局サーバ * newserver: $ sudo /usr/lib/ssl/misc/CA.sh -newreq {{{ Enter PEM pass phrase: <= type password (※) Verifying - Enter PEM pass phrase: <= retype it ----- Country Name (2 letter code) [AU]:JP State or Province Name (full name) [Some-State]:Ibaraki Locality Name (eg, city) []:Tsukuba Organization Name (eg, company) [Internet Widgits Pty Ltd]:mitty.jp Organizational Unit Name (eg, section) []:laboratory Common Name (eg, YOUR name) []:lab.mitty.jp Email Address []: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: <= type nothing An optional company name []: Request is in newreq.pem, private key is in newkey.pem }}} * (※) ここでtypeするパスワードは実際には使用されない * ルートCAへ送付する、サーバ証明書リクエストファイルとサーバ秘密鍵を作成 * newserver: $ sudo openssl rsa -in ./newkey.pem -out ./newkey.pem {{{ Enter pass phrase for ./newkey.pem: <= type password (※) }}} * (※) -newreq の時と同じパスワードをtype * サーバ秘密鍵からパスフレーズの削除 (Apacheが起動する際にパスフレーズを聞かれなくてすむようにする) ==== 新しい証明書への署名 ==== * newserverからrootCAへnewreq.pemをコピーする。この時、コピー先はrootCA上でdemoCAがあるディレクトリにすること。 * rootCA: $ sudo /usr/lib/ssl/misc/CA.sh -sign {{{ Enter pass phrase for ./demoCA/private/cakey.pem: Signed certificate is in newcert.pem }}} * ルートCAを作った際の秘密鍵のパスフレーズをtype * サーバ証明書がnewcert.pemとして作成される * rootCA: $ sudo openssl x509 -in newcert.pem -out newcert.crt * サーバ証明書から必要な部分だけを切り出す === 作成物 === * ./newkey.pem サーバ秘密鍵 * ./newcert.crt サーバ証明書 * ./demoCA/cacert.der (作った場合)サーバ証明書に対するルートCA証明書 === 参考 === * [http://www.aconus.com/~oyaji/www/certs_linux.htm SSL用証明書の作成(Linux編)] * [http://tkns.homelinux.net/memo/mandrivalinux10.1/openssl.html Memo of the OpenSSL] * [http://d.hatena.ne.jp/rudeboyjet/20070124/p1 Debian etchでSSL - よしだメモ] * [http://www.shitomi.jp/ubuntu804/apache.html Apache (Webサーバー)/Ubuntu 8.04]