web-dev-qa-db-ja.com

nginXでホスト.p7bHTTPS証明書

WebサービスをHTTPからHTTPSに変更する必要があるため、.csrを生成してクライアントに提供し、LinuxサーバーでホストされているnginXで使用する代わりに.p7bファイルと.cerファイルを取得しました。

私はnginXを初めて使用し、理解しているように、.p7bと.cerはどちらも証明書ファイルですが、どちらを使用するかについて混乱していますssl_certificateパラメーターまたは両方のファイルを連結して渡す必要がありますか結果のファイルをssl_certificateに目的を果たすために?

server {

listen   443;
ssl    on;
ssl_certificate    /etc/ssl/your_domain_name.pem; (or bundle.crt)
ssl_certificate_key    /etc/ssl/your_domain_name.key;

server_name your.domain.com;
access_log /var/log/nginx/nginx.vhost.access.log;
error_log /var/log/nginx/nginx.vhost.error.log;
location / {
root   /home/www/public_html/your.domain.com/public/;
index  index.html;
}

}

私はこのリンクに沿ってさまざまなリンクをたどっていますが、適切な答えを見つけることができませんでした。

使用方法を詳しく教えてもらえますか?

PS:質問をStackOverFlowからSuperUserにシフトしています。

3
Michael

どちらも(ほとんど)同じデータを異なる形式で含んでいます。 Nginxは「プレーンな」.crt形式を必要としますが、すべてのCAに必要なデータが含まれているわけではないため、とにかく.p7bから変換する必要がある可能性があります。 ( https://superuser.com/a/123327/1686 も参照してください。)

ssl_certificateファイルには2つの要件があります。

  • Nginx(および他の多くのサービス)の場合、BEGIN CERTIFICATEヘッダーを含むテキスト別名「PEMエンコード」形式である必要があります。

    .cerファイルがバイナリ形式である場合があります。テキストエディタで確認してください。 openssl x509 -inform DER < thing.cer > thing.crtを使用してテキスト形式に変換できます。

  • 証明書ファイルには、中間証明書のchainも含まれている必要があります。ここでも、テキストエディタで開きます(またはcerttool -iを使用します)。

    一部のCAは、代わりにそれらを個別のファイルとして含めます。その場合、それらを連結する必要があります(最初に証明書、次に中間体)。

.p7bファイルでも同じ証明書を取得しているので、thatをPEM証明書ファイルに変換するのが最も確実かもしれません。

openssl pkcs7 [-inform DER] -print_certs < thing.p7b > fullchain.crt

結果の.crtファイルには、必要なものがすべて含まれているはずです。

6
user1686