web-dev-qa-db-ja.com

chrome

OAuth httpsを必要とするInstagramの練習に使用しているhttpsサーバー側を作成しています。

次のリンクからスクリプトを実行して、SSLを使用して証明書を生成しました: https://Gist.github.com/bjanderson/075fadfccdd12623ab935e57eff58eb4

スクリプトは問題なく実行され、予想されるすべてのファイルを受け取りました。 ca.crtを信頼されたルート証明機関の下でchromeにインポートしましたが、chromeはまだそれを信頼しません。インポート場所は適切であるため、 chromeには、ca.crtをインポートできるさまざまなセクションがあります。

次のエラーが発生します。

証明書-サブジェクトの別名がありませんこのサイトの証明書には、ドメイン名またはIPアドレスを含むサブジェクトの別名拡張が含まれていません。

証明書-欠落このサイトには有効な信頼できる証明書がありません(net :: ERR_CERT_AUTHORITY_INVALID)。

これら2つの問題を修正し、自分のchromeで自己署名証明書を信頼するようにするにはどうすればよいですか?

1
alexW

Subject Alternative Nameは、言われているとおり、サブジェクトの代替名がリストされています。 Subjectフィールドの改善です。複数のサブジェクト名を許可するのに対し、Subjectは1つだけ許可します。最近のブラウザはSubject Alternative Name拡張のみを確認し、Subjectを無視しますフィールド。

最新のブラウザーで機能する自己署名証明書を作成するには、次のようなOpenSSL構成ファイルを作成し、openssl.cnfとして保存します。

######################################################
# OpenSSL config to generate a self-signed certificate
#
# Create certificate with:
# openssl req -x509 -new -nodes -days 720 -keyout selfsigned.key -out selfsigned.pem -config openssl.cnf
#
# Remove the -nodes option if you want to secure your private key with a passphrase
#
######################################################

################ Req Section ################
# This is used by the `openssl req` command
# to create a certificate request and by the
# `openssl req -x509` command to create a
# self-signed certificate.

[ req ]

# The size of the keys in bits:
default_bits       = 2048

# The message digest for self-signing the certificate
# sha1 or sha256 for best compatability, although most
# OpenSSL digest algorithm can be used.
# md4,md5,mdc2,rmd160,sha1,sha256
default_md = sha256

# Don't Prompt for the DN, use configured values instead
# This saves having to type in your DN each time.

Prompt             = no
string_mask        = default
distinguished_name = req_dn

# Extensions added while singing with the `openssl req -x509` command
x509_extensions = x509_ext

[ req_dn ]

countryName            = GB
stateOrProvinceName    = Somewhere
organizationName       = Example
commonName             = Example Web Service

[ x509_ext ]

subjectKeyIdentifier    = hash
authorityKeyIdentifier  = keyid:always

# No basicConstraints extension is equal to CA:False
# basicConstraints      = critical, CA:False

keyUsage = critical, digitalSignature, keyEncipherment

extendedKeyUsage = serverAuth

subjectAltName = @alt_names

[alt_names]
DNS.1 = www.example.com
DNS.2 = www.example.org

実行:

openssl req -x509 -new -nodes -days 720 -keyout selfsigned.key -out selfsigned.crt -config openssl.cnf

ブラウザのトラストアンカーストアにselfsigned.crtを追加します。

DNS解決(ローカルDNSまたは/etc/hostsファイル)を修正して、www.example.orgまたはwww.example.com127.0.0.1を指すようにすると、Chrome文句なしでwww.example.comまたはwww.example.orgにアクセスできます。

テストするには、次を実行します。

openssl s_serv -cert selfsigned.crt -key selfsigned.key -www -accept 8443

ブラウザでhttps://www.example.org:8443をポイントします。利用可能な暗号スイートといくつかのセッション情報のリストが表示されます。 not証明書の警告を取得する必要があります。

0
garethTheRed