web-dev-qa-db-ja.com

自己署名SSL証明書が無効です - 「サブジェクト代替名がありません」

最近、Chromeは私の自己署名SSL証明書の使用をやめ、安全ではないと考えています。 DevTools | Securityタブで証明書を見ると、それが言うことがわかります

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

証明書エラーサイトの証明書チェーンに問題があります(net :: ERR_CERT_COMMON_NAME_INVALID)。

どうすればこれを修正できますか?

77
Brad Parks

これを修正するには、証明書を作成するときにopensslに追加のパラメータを指定する必要があります。基本的には

-sha256 -extfile v3.ext

v3.extはそのようなファイルで、%%DOMAIN%%Common Nameと同じ名前に置き換えられます。 More info here and over here 。通常はCommon Name%%DOMAIN%%を、証明書を生成しようとしているドメインに設定します。したがって、www.mysupersite.comの場合は、両方のこと。

v3.ext

authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = %%DOMAIN%%

注:この問題に対処するスクリプト、および Chrome、Safari、およびJavaクライアントで使用するための完全に信頼されたSSL証明書の作成)は、次の場所にあります。

別の注意:自己署名証明書を表示しているときにchromeがエラーをスローしないようにするだけの場合は、ChromeにすべてのサイトのすべてのSSLエラーを無視するように指示できます。特別なコマンドラインオプション ここではSuperUser で詳述されているように)でそれを開始します。

82
Brad Parks

以下の解決策は私にとってはクロム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
17
Anshul

Chromeで有効な自己署名TLS証明書を簡単に生成できるように、 bashスクリプト を作成しました。

self-signed-tls bashスクリプト

証明書をインストールしたら、必ずchrome(chrome://restart)を再起動してください。 Chrome 65.xでテストされ、それはまだ機能しています。


チェックアウトする価値があるもう1つの(はるかに堅牢な)ツールは、CloudFlareのcfsslツールキットです。

cfssl

14
Logan

私は単にマシンの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などの他の属性を追加して、プロンプトを表示せずに証明書を生成できます。

4
Ludwig
  • ホームディレクトリに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を削除できます

0

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>
$

ここからコピー https://ksearch.wordpress.com/2017/08/22/generate-and-import-a-self-signed-ssl-certificate-on-mac-osx-sierra/

END UPDATE

removedmycert fromsystemの場合にのみ、最後に緑色のSecureを見ることができました、およびaddedそれをlocalキーチェーンに追加します。 (ある場合-最初にドロップします)。 それが合致するかどうかはわかりませんが、私の場合は、Chrome経由で証明書をダウンロードし、作成日が今日であることを確認しました-それが今作成したものです

誰かがそれに一日を過ごすのに役立つことを願っています。

クロムを更新しないでください!

0
user2932688

V3.extファイルのDNS.1値を変更することで(net :: ERR_CERT_AUTHORITY_INVALID)を取り除くことができました

[alt_names] DNS.1 = domainname.com

Domainname.comを自分のドメインに変更します。

0
Jun See