ServerHello の証明書チェーンを構築する方法

ServerHello の証明書チェーンを構築する方法

証明書チェーンを作成しようとしています。証明機関/CA に送信した秘密鍵 ( privatekey.pem) と CSR ( ) があります。csr.pem

私はCAの証明書を取得し、その内容をファイル(ca.crt)に入れました。これはca.crt1行で始まり-----BEGIN CERTIFICATE-----、その後にハッシュ化されたものが続きます。しかし、証明書チェーンはまだ必要なので、ここで証明書チェーンの例を見てみましょう。http://docs.aws.amazon.com/IAM/latest/UserGuide/InstallCert.html#SampleCert

私が持っているのはprivatekey.pemルート証明書(ですよね?)で、ca.crtそのリンクのサンプル チェーンの中間証明書 1 だと思います。その場合、他の中間証明書はどこでどうやって入手するのでしょうか。私が誤解している場合、注文を取得/生成するには何を、どのようにすればよいのでしょうか。

答え1

ここではいくつかの側面が混同されているようです。最終結果を得るために必要なのは

  1. あなたの秘密鍵
  2. ルート証明書は、同じ CA を使用するすべての人にとって同等です (ca.crt がそれのようです)
  3. 中間証明書(通常はCAのサイトにあります)
  4. 送信された 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は証明書チェーンの作成に役立ちます

  1. ルート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
  1. 中間 CA の秘密鍵と証明書署名要求を作成するコマンド

    openssl req -new -nodes -newkey rsa:2048 -keyout 中間CAPrivateKey.key -out 中間CACertificateSignRequest.csr

  2. 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
  1. サーバーの秘密鍵と署名リクエストを作成するコマンド

    openssl req -new -nodes -newkey rsa:2048 -keyout serverPrivateKey.key -out serverSignRequest.csr

  2. 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 ページを提供するサーバー内に保存されます。

ウェブページをリクエストすると、サーバー証明書が証明書チェーンに対して検証されることがわかります。

関連情報