2016/09/03
opensslでオレオレ証明書 備忘録
オレオレ証明書が必要になるたび毎回ググッているのでの作り方メモっとく。
参考サイトを整理してスクリプトに落としただけ。
make-ca.sh
ルート証明書を作成するスクリプト。
#!/bin/sh
CA_SUBJ="/C=JP/ST=Tokyo/L=Shinjyuku/O=Oreore/OU=Admin/CN=ore.jp/emailAddress=admin@ore.jp"
openssl genrsa 2048 > ca.key
openssl req -new -key ca.key -subj "$CA_SUBJ" > ca.csr
#openssl x509 -days 36500 -req -signkey ca.key < ca.csr > ca.crt
openssl ca -create_serial -days 36500 -batch -keyfile ca.key -selfsign \
-extensions v3_ca -infiles ca.csr > ca.crt
openssl x509 -text < ca.crt
openssl verify < ca.crt
openssl pkcs12 -export -in ca.crt -inkey ca.key -out ca.pfx
# see /usr/ssl/openssl.cnf
DIR=demoCA
rm -r $DIR
mkdir -p $DIR
mkdir -p $DIR/private
mkdir -p $DIR/crl
mkdir -p $DIR/certs
mkdir -p $DIR/newcerts
echo "01" > $DIR/serial
touch $DIR/index.txt
echo FINISH
make-server.sh
サーバ証明書を作成するスクリプト。
#!/bin/sh
if ["$1" == ""] ; then
echo "Usage: $0 <server-domain-name>"
exit
fi
SERVER_SUBJ="/C=JP/ST=Tokyo/L=shinjyuku/O=Oreore/OU=target/CN=$1"
awk -f config.awk < /usr/ssl/openssl.cnf > openssl.cnf
openssl genrsa 2048 > server.key
openssl req -config openssl.cnf -new -key server.key -subj "$SERVER_SUBJ" > server.csr
openssl ca -config openssl.cnf -days 36500 -keyfile ca.key -cert ca.crt -in server.csr -out server.crt
openssl pkcs12 -export -in server.crt -inkey server.key -out server.pfx
- ルート証明書を作ったフォルダと同じ所で実行する。
- 引数にサーバのドメイン名を指定する。
config.awk
openssl.cnf はデフォルトだとダメなので書き換えるawkスクリプト。
#/usr/bin/awk -f
usr_cert == 0 || (!/basicConstraints/ && !/nsCertType/ && !/keyUsage/) {
print $0;
}
/^\[/{
if ($0 ~ /usr_cert/) {
usr_cert = 1;
print "basicConstraints=CA:TRUE";
print "nsCertType = sslCA, emailCA";
print "keyUsage = cRLSign, keyCertSign";
} else {
usr_cert = 0;
}
}
補足
Android/6.0.1 にインストールする場合は設定アプリの「セキュリティ」->「ストレージからのインストール」 から pfx ファイルをインストールする。
crt ファイルは何故かインストールできない。OSバージョンによっても違いそうなので要注意。
この投稿へのコメント

コメント・フォーム