opensslのインストール
Windows: ダウンロードページ「OpenSSL Installer for Windows」
Linux:大体インストールしたら一緒にくっ付いてきてますが、無い場合は下記のコマンドでインストール
sudo apt-get install openssl ・・・debian
sudo yum install openssl ・・・CentOS
各証明書の確認コマンド
openssl req -text -noout -in CSR名 ・・・CSRの内容を確認
openssl rsa -text -noout -in 秘密鍵ファイル名 ・・・秘密鍵の中身を確認
openssl x509 -text -noout -in 証明書ファイル名 ・・・証明書の中身を確認
where openssl ・・・WindowsでのopennsslのEXEファイルの場所確認
Windows CA認証局を作成する
各フォルダを作成します
コマンドプロンプトで下記のコマンドを実行
今回の例ではコマンドプロンプトの作業フォルダは「C:\CA-TEST」としています
cd "作成したいフォルダPath" mkdir CA\certs mkdir CA\crl mkdir CA\newcerts mkdir CA\private mkdir CA\csr type nul > CA\index.txt type nul > CA\crlnumber echo 1001 > CA\serial

OpenSSL 設定ファイル
CA用に作成したフォルダ内に以下の内容を openssl.cfg というファイル名で作成

[ ca ] default_ca = CA_default [ CA_default ] dir = .\\CA certs = $dir\\certs crl_dir = $dir\\crl database = $dir\\index.txt new_certs_dir = $dir\\newcerts serial = $dir\\serial crlnumber = $dir\\crlnumber crl = $dir\\crl.pem certificate = $dir\\certs\\ca-cert.pem private_key = $dir\\private\\ca-secretkey.pem name_opt = ca_default cert_opt = ca_default crl_extensions = crl_ext default_days = 3650 #この値はルートCAで他の証明書に署名する際に、-daysオプションを指定しない場合に適用されます。 default_crl_days = 30 default_md = sha256 preserve = no policy = policy_match [ policy_match ] countryName = match stateOrProvinceName = match organizationName = match organizationalUnitName = optional commonName = supplied emailAddress = optional [ policy_anything ] countryName = optional stateOrProvinceName = optional localityName = optional organizationName = optional organizationalUnitName = optional commonName = supplied emailAddress = optional [ req ] default_bits = 2048 #1024 (非推奨) ・2048 (推奨)・3072(高セキュリティ高負荷)・4096(高セキュリティ高負荷) distinguished_name = req_distinguished_name x509_extensions = v3_ca string_mask = utf8only default_md = sha256 [ req_distinguished_name ] countryName = Country Name (2 letter code) countryName_default = JP countryName_min = 2 countryName_max = 2 stateOrProvinceName = State or Province Name (full name) stateOrProvinceName_default = Kanto localityName = Locality Name (eg, city) localityName_default = TOKYO 0.organizationName = Organization Name (eg, company) 0.organizationName_default = ABC company. organizationalUnitName = Organizational Unit Name (eg, section) organizationalUnitName_default = ABC Root CA commonName = Common Name (e.g. server FQDN or YOUR name) commonName_default = abc.example.com commonName_max = 64 emailAddress = Email Address emailAddress_default = abc@example.com emailAddress_max = 64 [ server_cert ] basicConstraints = CA:FALSE nsCertType = server nsComment = "OpenSSL Generated Server Certificate" subjectKeyIdentifier = hash authorityKeyIdentifier = keyid,issuer:always keyUsage = critical, digitalSignature, keyEncipherment extendedKeyUsage = serverAuth [ v3_ca ] subjectKeyIdentifier = hash authorityKeyIdentifier = keyid:always,issuer basicConstraints = critical,CA:true keyUsage = critical, digitalSignature, cRLSign, keyCertSign [ crl_ext ] authorityKeyIdentifier = keyid:always
CAの秘密鍵作成
CAの秘密鍵作成「ca-secretkey.pem」
※パスフレーズを入力するので忘れないようにしましょう
openssl genrsa -aes256 -out "秘密鍵ファイル" "鍵長1024/2048/3072/4096"
例:openssl genrsa -aes256 -out CA\private\ca-secretkey.pem 4096

CAの証明書作成
CAの証明書を作成「ca-cert.pem」及び「ca-cert.crt」
※作成時は秘密鍵のパスフレーズが効かれるので入力
各識別値はオレオレの場合は自由に入力
openssl req -config “Configファイルパス” -key “秘密鍵ファイル名” -new -x509 -days “有効日数” -sha256 -out “出力先証明書ファイル名“
PEM形式例:
openssl req -config CA\openssl.cfg -key CA\private\ca-secretkey.pem -new -x509 -days 3650 -sha256 -out CA\certs\ca-cert.pem
crtで作成するとスムーズにWindowsへインストールできます
CRT形式例:
openssl req -config CA\openssl.cfg -key CA\private\ca-secretkey.pem -new -x509 -days 3650 -sha256 -out CA\certs\ca-cert.crt

windowへCA証明書をインストール
作成した証明書ををダブルクリックして「証明書のインストール」を選択

証明書はルート証明書を選択
(オレオレなのでインストール時は警告が出ます)


自己認証CA局でCSRに署名する
CSRはFortigateで発行してます
発行手順は右記を参照
CA認証局の秘密鍵と証明書がある事
\certs\ca-cert.pem
\private\ca-secretkey.pem
openssl ca –policy policy_anything -config “Configファイルパス” -out 署名後のファイル名.pem -infiles CSRファイルパス.csr
例:openssl ca -policy policy_anything -config CA\openssl.cfg -out CA\TEST-FGT-CSR.pem -infiles CA\TEST-FGT-CSR.csr


Linux CA認証局を作成する
openssl.conf ファイルを修正します
/etc/ssl/openssl.cnf
修正箇所*****************************
dir = /etc/ssl/PietoroCA
certificate = $dir/Pietoro-CAcert.pem
private_key = $dir/private/Pietoro-CAkey.pem
PietoroCA の配下に certs,private,crl,newcerts のディレクトリを作成する
mkdir -p /etc/ssl/PietoroCA
mkdir -p /etc/ssl/PietoroCA/private
mkdir -p /etc/ssl/PietoroCA/crl
mkdir -p /etc/ssl/PietoroCA/newcerts
シリアルを作成する
echo “0120” > PietoroCA/serial
証明書データベースを作成する
touch PietoroCA/index.txt
CAを作成する
cd /etc/ssl
今回のファイル名は下記にしてます
秘密鍵名=Pietoro-CAkey.pem
認証局証明書名=Pietoro-CAcert.pem
有効期限=3650日:10年
CA認証局用の秘密鍵と証明書を作成
openssl req -new -x509 -newkey rsa:2048 -out PietoroCA/Pietoro-CAcert.pem -keyout PietoroCA/private/Pietoro-CAkey.pem -days 3650
※このパスフレーズは次回使うので忘れずに
Enter PEM pass phrase:
Verifying – Enter PEM pass phrase:
各値は適当に
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:TOKYO
Locality Name (eg, city) []:SHINJYUKU
Organization Name (eg, company) [Internet Widgits Pty Ltd]:TEST-com
Organizational Unit Name (eg, section) []:TEST-section
Common Name (e.g. server FQDN or YOUR name) []:PIETORO.jp
Email Address []:
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y”
下記のファイルが作成される
PietoroCA/Pietoro-CAcert.pem : 自己署名済みCA証明書
PietoroCA/private/Pietoro-CAkey.pem : CA証明書の秘密鍵
自己認証CA局でCSRに署名する
openssl ca -policy policy_anything -out 署名後のファイル名.pem -infiles CSRファイルパス.csr
※CAのパスフレーズを聞かれるので先ほど指定した値を入力
※サーバー証明書CSRと認証局の国・都市名等の値が違うと「The stateOrProvinceName field XXXX」というようなエラーが出るようなので、オプション「-policy policy_anything」をつけてます
署名後のファイルが作成される
コメント