自己証明書を簡単に作成する方法
環境
- OS: CentOS 7.4
OpenSSLのパッケージが用意した?スクリプト
RPMなどのパッケージでopensslを導入した環境では、下記のスクリプトが配置されている。
$ ls -al /etc/pki/tls/certs/make-dummy-cert
-rwxr-xr-x. 1 root root 610 8月 4 2017 /etc/pki/tls/certs/make-dummy-cert
$ rpm -qf /etc/pki/tls/certs/make-dummy-cert
openssl-1.0.2k-8.el7.x86_64
$ cat /etc/pki/tls/certs/make-dummy-cert
#!/bin/sh
umask 077
answers() {
echo --
echo SomeState
echo SomeCity
echo SomeOrganization
echo SomeOrganizationalUnit
echo localhost.localdomain
echo root@localhost.localdomain
}
if [ $# -eq 0 ] ; then
echo $"Usage: `basename $0` filename [...]"
exit 0
fi
for target in $@ ; do
PEM1=`/bin/mktemp /tmp/openssl.XXXXXX`
PEM2=`/bin/mktemp /tmp/openssl.XXXXXX`
trap "rm -f $PEM1 $PEM2" SIGINT
answers | /usr/bin/openssl req -newkey rsa:2048 -keyout $PEM1 -nodes -x509 -days 365 -out $PEM2 2> /dev/null
cat $PEM1 > ${target}
echo "" >> ${target}
cat $PEM2 >> ${target}
rm -f $PEM1 $PEM2
done
このスクリプトを使うことで、下記のように秘密鍵と証明書がセットになったファイルを簡単に作成できる。
-----BEGIN PRIVATE KEY----- 省略 -----END PRIVATE KEY----- -----BEGIN CERTIFICATE----- 省略 -----END CERTIFICATE-----
使い方
下記のように、作成するファイル名を引数で与えれば一度に複数のファイルが作成できる。
$ /etc/pki/tls/certs/make-dummy-cert /tmp/test_cert_{1,2,3,4,5,6,7,8,9}.crt
$ ls -al /tmp/test_cert_*
-rw-------. 1 aoishi aoishi 3254 4月 5 15:57 /tmp/test_cert_1.crt
-rw-------. 1 aoishi aoishi 3254 4月 5 15:57 /tmp/test_cert_2.crt
-rw-------. 1 aoishi aoishi 3254 4月 5 15:57 /tmp/test_cert_3.crt
-rw-------. 1 aoishi aoishi 3254 4月 5 15:57 /tmp/test_cert_4.crt
-rw-------. 1 aoishi aoishi 3254 4月 5 15:57 /tmp/test_cert_5.crt
-rw-------. 1 aoishi aoishi 3254 4月 5 15:57 /tmp/test_cert_6.crt
-rw-------. 1 aoishi aoishi 3254 4月 5 15:57 /tmp/test_cert_7.crt
-rw-------. 1 aoishi aoishi 3258 4月 5 15:57 /tmp/test_cert_8.crt
-rw-------. 1 aoishi aoishi 3254 4月 5 15:57 /tmp/test_cert_9.crt
秘密鍵と証明書は下記の要領で分離する。
x) 秘密鍵 $ sed -n -e "/-----BEGIN PRIVATE KEY-----/,/-----END PRIVATE KEY-----/p" /tmp/test_cert_1.crt x) 証明書 $ sed -n -e "/-----BEGIN CERTIFICATE-----/,/-----END CERTIFICATE-----/p" /tmp/test_cert_1.crt