2016/07/15(金)プライベートCAの構築[FreeBSD] (1)
2017/10/12 19:30
7年半前に構築したきりですので、構築手順を忘れています・・・orz
ということで、2回の記事に分けて投稿します。いつものメモです。
具体的には、弊社のVPN接続と電子メール送受信(TLS 又は SSL を使用している場合のみ)に影響があります。新しい証明書に入れ替えて頂く必要があります。
きちんとした正式認証局のものを使うべきだろう、、という声も聞こえてきそうですが、弊社暗号化通信サービスに閉じた用途ですし、逆に汎用的に使われては困るので、弊社プライベートCAでの運用としています。
● 先ずは、スクリプトの修正
Google先生の検索では、Linux ベースの CentOS の事例ばかりで、FreeBSD の事例はほぼ皆無。
ですが、ファイルの置き場所以外に大差ありません。
FreeBSD の場合は、 /usr/src/crypto/openssl/apps/CA.sh を編集します:
(63行目付近)
if [ -z "$DAYS" ] ; then DAYS="-days 395" ; fi # 13 month CADAYS="-days 14610" # 40 years REQ="$OPENSSL req $SSLEAY_CONFIG"(71行目付近)
if [ -z "$CATOP" ] ; then CATOP=/root/BaseKernelCA ; fiCADAYS はCAの有効日数。
CATOP はCAにて発行する証明書の管理トップディレクトリです。
共に適宜の値を指定します。
変更したら、
# chmod +x /usr/src/crypto/openssl/apps/CA.shとして、スプリプトを実行可能状態にしておきます。
●次に /etc/ssl/openssl.cnf の修正
FreeBSD においては、opensslの設定ファイルは、/etc/ssl/openssl.cnf にあります。
このファイルは、セクション単位に設定項目がまとまっています。
セクション内の該当パラメータを以下のように修正します。
[ CA_default ] dir = /root/BaseKernelCA default_days = 7305 default_crl_days= 30 default_md = sha512 policy = policy_match [ policy_match ] countryName = match stateOrProvinceName = supplied organizationName = supplied organizationalUnitName = optional commonName = supplied emailAddress = optional [ req ] default_bits = 2048 default_md = sha512 [ req_distinguished_name ] countryName_default = JP stateOrProvinceName_default = Hokkaido 0.organizationName_default = Base Kernel Co., Ltd [ usr_cert ] basicConstraints=CA:true nsCertType = server [ v3_ca ] basicConstraints = CA:true nsCertType = sslCA, emailCAこの修正で、鍵長デフォルト 2,048bit、暗号化ハッシュ SHA-2(SHA512) に対応します。
修正したら、プライベートCAの構築です。(以下、一部テキスト伏字処理あり)
# /usr/src/crypto/openssl/apps/CA.sh -newca
CA certificate filename (or enter to create) Making CA certificate ... Generating a 2048 bit RSA private key ...............................................................+++ .......................................+++ writing new private key to '/root/BaseKernelCA/private/./cakey.pem' Enter PEM pass phrase: (CAパスフレーズ入力) Verifying - Enter PEM pass phrase: (もう一度同じCAパスフレーズ入力) ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [JP]: (JP でよいのでこのままリターン) State or Province Name (full name) [Hokkaido]:(Hokkaido でよいのでこのままリターン) Locality Name (eg, city) []:Sapporo Organization Name (eg, company) [Base Kernel Co., Ltd]: Organizational Unit Name (eg, section) []:Base Net Common Name (eg, YOUR name) []:Base Kernel CA Email Address []:hoge@example.com Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: (このままリターン) An optional company name []: (このままリターン) Using configuration from /etc/ssl/openssl.cnf Enter pass phrase for /root/BaseKernelCA/private/./cakey.pem: Check that the request matches the signature Signature ok (以下省略)実際には続いてこんな感じで詳細が出力されます:
この例では、/root/BasekernelCA/cacert.pem にCAの証明書が生成されます。
この証明書は、後でサーバ証明書を発行する際に、一緒にCA証明書として通知を行います。
また、この例では証明書の有効期間を 40年としていますが、こういうアホな証明書も発行できるということでご参考にどーぞ。
次の記事は、このプライベートCAを用いたサーバ証明書の発行方法です。
#以前は出来なかったんです。はい。確か、2036年くらいが限界でした。