最近、Chromeは私の自己署名SSL証明書の使用をやめ、安全ではないと考えています。 DevTools | Security
タブで証明書を見ると、それが言うことがわかります
サブジェクト代替名がありませんこのサイトの証明書には、ドメイン名またはIPアドレスを含むサブジェクト代替名の拡張子が含まれていません。
証明書エラーサイトの証明書チェーンに問題があります(net :: ERR_CERT_COMMON_NAME_INVALID)。
どうすればこれを修正できますか?
これを修正するには、証明書を作成するときにopenssl
に追加のパラメータを指定する必要があります。基本的には
-sha256 -extfile v3.ext
v3.ext
はそのようなファイルで、%%DOMAIN%%
はCommon Name
と同じ名前に置き換えられます。 More info here and over here 。通常はCommon Name
と%%DOMAIN%%
を、証明書を生成しようとしているドメインに設定します。したがって、www.mysupersite.com
の場合は、両方のこと。
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = %%DOMAIN%%
別の注意:自己署名証明書を表示しているときにchromeがエラーをスローしないようにするだけの場合は、ChromeにすべてのサイトのすべてのSSLエラーを無視するように指示できます。特別なコマンドラインオプション ここではSuperUser で詳述されているように)でそれを開始します。
以下の解決策は私にとってはクロム65( ref )に効きました -
OpenSSL設定ファイルを作成します(例:req.cnf)
[req]
distinguished_name = req_distinguished_name
x509_extensions = v3_req
Prompt = no
[req_distinguished_name]
C = US
ST = VA
L = SomeCity
O = MyCompany
OU = MyDivision
CN = www.company.com
[v3_req]
keyUsage = critical, digitalSignature, keyAgreement
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1 = www.company.com
DNS.2 = company.com
DNS.3 = company.net
この設定ファイルを参照する証明書を作成します
openssl req -x509 -nodes -days 730 -newkey rsa:2048 \
-keyout cert.key -out cert.pem -config req.cnf -sha256
Chromeで有効な自己署名TLS証明書を簡単に生成できるように、 bashスクリプト を作成しました。
証明書をインストールしたら、必ずchrome(chrome://restart
)を再起動してください。 Chrome 65.x
でテストされ、それはまだ機能しています。
チェックアウトする価値があるもう1つの(はるかに堅牢な)ツールは、CloudFlareのcfssl
ツールキットです。
私は単にマシンのIPアドレスを追加する-subj
パラメータを使用します。 1つのコマンドだけで解決しました。
Sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -sha256 -subj '/CN=my-domain.com/subjectAltName=DNS.1=192.168.0.222/' -keyout my-domain.key -out my-domain.crt
C、ST、L、O、OU、emailAddressなどの他の属性を追加して、プロンプトを表示せずに証明書を生成できます。
ホームディレクトリにOpenSSL設定のコピーを作成します。
cp /System/Library/OpenSSL/openssl.cnf ~/openssl-temp.cnf
またはLinuxの場合:
cp /etc/ssl/openssl.cnf ~/openssl-temp.cnf
サブジェクトの別名をopenssl-temp.cnf
の下の[v3_ca]
に追加します。
[ v3_ca ]
subjectAltName = DNS:localhost
localhost
を、その証明書を生成するドメインに置き換えます。
証明書を生成:
Sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-config ~/openssl-temp.cnf
-keyout /path/to/your.key -out /path/to/your.crt
その後、openssl-temp.cnf
を削除できます
onMACchromeバージョン67.0.3396.99以降、自己署名証明書が機能しなくなりました。
ここに書かれたものすべてでの再生は機能しませんでした。
UPDATE
私のアプローチが今日うまくいくことを確認する機会がありました:)。うまくいかない場合は、このアプローチを使用していることを確認してください
v3.ext
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = <specify-the-same-common-name-that-you-used-while-generating-csr-in-the-last-step>
$
END UPDATE
removedmycert fromsystemの場合にのみ、最後に緑色のSecureを見ることができました、およびaddedそれをlocalキーチェーンに追加します。 (ある場合-最初にドロップします)。 それが合致するかどうかはわかりませんが、私の場合は、Chrome経由で証明書をダウンロードし、作成日が今日であることを確認しました-それが今作成したものです
誰かがそれに一日を過ごすのに役立つことを願っています。
クロムを更新しないでください!
V3.extファイルのDNS.1値を変更することで(net :: ERR_CERT_AUTHORITY_INVALID)を取り除くことができました
[alt_names] DNS.1 = domainname.com
Domainname.comを自分のドメインに変更します。