証明書チェーンを作成しようとしています。証明機関/CA に送信した秘密鍵 ( privatekey.pem
) と CSR ( ) があります。csr.pem
私はCAの証明書を取得し、その内容をファイル(ca.crt
)に入れました。これはca.crt
1行で始まり-----BEGIN CERTIFICATE-----
、その後にハッシュ化されたものが続きます。しかし、証明書チェーンはまだ必要なので、ここで証明書チェーンの例を見てみましょう。http://docs.aws.amazon.com/IAM/latest/UserGuide/InstallCert.html#SampleCert
私が持っているのはprivatekey.pem
ルート証明書(ですよね?)で、ca.crt
そのリンクのサンプル チェーンの中間証明書 1 だと思います。その場合、他の中間証明書はどこでどうやって入手するのでしょうか。私が誤解している場合、注文を取得/生成するには何を、どのようにすればよいのでしょうか。
答え1
ここではいくつかの側面が混同されているようです。最終結果を得るために必要なのは
- あなたの秘密鍵
- ルート証明書は、同じ CA を使用するすべての人にとって同等です (ca.crt がそれのようです)
- 中間証明書(通常はCAのサイトにあります)
- 送信された CSR の結果が証明書になります。
2 ~ 4 で証明書チェーンが構成されます。
答え2
アドロン、
privatekey.pem は、CA から要求した証明書の秘密鍵です。
ルート CA 証明書は、証明書を発行した特定の PKI の最上位からの証明書であり、自己署名証明書になります。
中間 CA 証明書は、ルート CA の下にあるサブ CA からのものです。
たとえば、example.com には exampleRootCA というルート CA と exampleSubCA というサブ CA があります。
例SubCAはSSL証明書AdronSSLを発行します
証明書チェーンはAdronSSL -> exampleSubCA -> exampleRootCAになります。
お役に立てれば
答え3
以下のコマンド1~5は証明書チェーンの作成に役立ちます
ルートCAの秘密鍵と自己署名証明書を作成するコマンド
openssl req -new -nodes -newkey rsa:2048 -sha256 -days 100 -keyout rootPrivateKey.key -x509 -out rootCACertificate.pem
注: RootCA 証明書を .crt 形式から .pem 形式に変換するコマンド
openssl x509 -outform pem -in rootCACertificate.pem -out rootCACertificate.crt
中間 CA の秘密鍵と証明書署名要求を作成するコマンド
openssl req -new -nodes -newkey rsa:2048 -keyout 中間CAPrivateKey.key -out 中間CACertificateSignRequest.csr
RootCA によって署名された中間 CA の証明書を作成するコマンド
openssl x509 -req -sha256 -days 100 -in 中間CACertificateSignRequest.csr -CA rootCACertificate.pem -CAkey rootPrivateKey.key -CAcreateserial -extfile domain.ext -out 中間CACertificate.crt
domain.ext の内容は以下の通りです。
subjectKeyIdentifier = hash authorityKeyIdentifier = keyid:always,issuer basicConstraints = critical, CA:true keyUsage = critical, digitalSignature, cRLSign, keyCertSign
サーバーの秘密鍵と署名リクエストを作成するコマンド
openssl req -new -nodes -newkey rsa:2048 -keyout serverPrivateKey.key -out serverSignRequest.csr
IntermediateCA によって署名されたサーバーの証明書を作成するコマンド
openssl x509 -req -sha256 -days 100 -in serverSignRequest.csr -CA 中間CACertificate.crt -CAkey 中間CAPrivateKey.key -CAcreateserial -extfile domain.ext -out serverCertificate.crt
domain.ext の内容は以下の通りです。
basicConstraints = CA:FALSE keyUsage = nonRepudiation、digitalSignature、keyEncipherment subjectAltName = @alt_names [ alt_names ] DNS.1 = localhost
注: .key 形式のサーバーの秘密鍵を .PEM 形式に変換するコマンド。
openssl rsa -in serverPrivateKey.key -out serverPrivateKey.pem
ここで、ルート CA は自己署名されています。そのため、ブラウザーはそれを認識しません。ブラウザーが認識できるようにするには、IE を開き、[ツール] -> [インターネット オプション] -> [コンテンツ] の順に選択し、[信頼された証明機関] セクションでルート CA を、[中間証明機関] セクションで中間 CA をインポートします。
サーバー証明書とサーバーの秘密キーは、Web ページを提供するサーバー内に保存されます。
ウェブページをリクエストすると、サーバー証明書が証明書チェーンに対して検証されることがわかります。