Webサーバ上に独自CAを構築して証明書を作成する。
OS: Ubuntu12.04
参考URL: Ubuntu documentation: Certificates
必要なディレクトリを作成
$ sudo mkdir /etc/ssl/CA
$ sudo mkdir /etc/ssl/newcerts
シリアルとインデックス管理ファイルを作成する
$ sudo sh -c "echo '01' > /etc/ssl/CA/serial"
$ sudo touch /etc/ssl/CA/index.txt
openssl.cnfファイルを編集する。
$ sudo cp -p /etc/ssl/openssl.cnf{,.orig}
$ sudo vi /etc/ssl/openssl.cnf
dir = /etc/ssl # Where everything is kept
database = $dir/CA/index.txt # database index file.
certificate = $dir/certs/cacert.pem # The CA certificate
serial = $dir/CA/serial # The current serial number
CAの鍵と証明書を作成 (有効期間10年)
$ sudo openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3652
...
Enter PEM pass phrase: ********
Verifying - Enter PEM pass phrase: ********
...
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:Aichi
Locality Name (eg, city) []:Nagoya
Organization Name (eg, company) [Internet Widgits Pty Ltd]: MyHome
Organizational Unit Name (eg, section) []: Dept. for general purpose
Common Name (e.g. server FQDN or YOUR name) []:MyCA
Email Address []: oreore@example.jp
出来上がった鍵と証明書をディレクトリに配置する。
$ sudo mv cakey.pem /etc/ssl/private/
$ sudo mv cacert.pem /etc/ssl/certs/
$ sudo chmod go-rwx /etc/ssl/private/cakey.pem
以上でCAの構築は完了。
以下、サーバ証明書を作成する。
サーバ鍵の作成
$ sudo openssl genrsa -aes256 -out server.key 2048
鍵ファイルに付いてしまったパスワードを削除する。
$ sudo openssl rsa -in server.key -out server.key
CSR作成 (有効期間は5年にしてみる)
$ sudo openssl req -new -days 1826 -key server.key -out server.csr
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:Aichi
Locality Name (eg, city) []:Nagoya
Organization Name (eg, company) [Internet Widgits Pty Ltd]:MyHome
Organizational Unit Name (eg, section) []: Dept. for general purpose
Common Name (e.g. server FQDN or YOUR name) []:www.example.jp
Email Address []: oreore@example.jp
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
先ほど作成したCAでサーバCSRに署名する
$ sudo openssl ca -in server.csr -config /etc/ssl/openssl.cnf
Using configuration from /etc/ssl/openssl.cnf
Enter pass phrase for /etc/ssl/private/cakey.pem: ********
....
証明書が/etc/ssl/newcerts/01.pemとして作成されるので、証明書ディレクトリにコピーする。
$ sudo cp /etc/ssl/newcerts/01.pem /etc/ssl/certs/server.crt
鍵ファイルも保存しておく
$ sudo cp server.key /etc/ssl/private/server.key
$ sudo chown root:root /etc/ssl/private/server.key
$ sudo chmod go-rwx /etc/ssl/private/server.key