- SSL証明書の発行依頼を行う際、発行業者さんにCSR(Certificate Signing Request)を提示する必要があります。
- SSL証明書の更新は年に1度とか、数年に1度実施する作業なので、どういう手順で生成するのか覚えていません。
- たいてい、WEBページでCSRの作成手順を案内していますが、呪文のようなコマンドがいくつか並んでいてしかも対話形式なのでちょっと煩わしい。
- だからシェルスクリプトにしました。
- OpenSSL用です。
スクリプト
- 第1引数にFQDN(コモンネームと生成するファイル名に使用します)
- 第2引数にパスフレーズ
#!/bin/sh
if [ $# -ne 2 ]; then
echo "usage: $0 <fqdn> <passphrase>"
exit 1;
fi
CN=$1
PP=$2
# 対話式で入力するdistinguished nameを一度に指定。コモンネームは第1引数
SJ="/C=JP/ST=Tokyo/L=Minato-ku/O=DONDARI inc./OU=dondari labo/CN=$CN"
# 秘密鍵を作成
openssl genrsa -des3 -passout pass:$PP -out $CN.key 2048
# パスフレーズなしの秘密鍵にする
openssl rsa -passin pass:$PP -in $CN.key -out $CN.key
# CSR出力
openssl req -new -sha256 -key $CN.key -out $CN.csr -subj "$SJ"
# 確認のためにCSR内容を表示
openssl req -noout -text -in $CN.csr
オレオレ証明書を作成する
- 開発用とか、テスト環境用に自己証明書(self signed certificate:通称オレオレ証明書)を作成する場合は上記で作成した .keyファイルと.csrファイルを使用し、下記のように作成します。
# server.csrとserver.keyを指定して server.crtを作成する例
openssl x509 -req -in server.csr -signkey server.key -sha256 -days 36500 -out server.crt
証明書ファイルの内容を表示
openssl x509 -text -noout -in server.crt
証明書ファイルのfingerprintを表示
openssl x509 -fingerprint -noout -in server.crt
秘密鍵から公開鍵を作成する
openssl rsa -pubout -in server.key -out server.pub
公開鍵を確認する
openssl rsa -text -pubin < server.pub
PKCS#12作成
openssl pkcs12 -export -in server.crt -inkey server.key -out server.p12
PKCS#12確認
$ openssl pkcs12 -in shinsaka.p12 -info -noout
Enter Import Password:
MAC Iteration 2048
MAC verified OK
PKCS7 Encrypted data: pbeWithSHA1And40BitRC2-CBC, Iteration 2048
Certificate bag
PKCS7 Data
Shrouded Keybag: pbeWithSHA1And3-KeyTripleDES-CBC, Iteration 2048