Localhost CN用の自己署名SSL証明書を作成しました。期待どおりに、Firefoxは最初にそれについて不平を言った後にこの証明書を受け入れます。ただし、ChromeとIEは、信頼されたルートの下のシステム証明書ストアに証明書を追加した後でも、それを受け入れることを拒否します。 ChromeのHTTPSポップアップで[証明書情報の表示]をクリックしたときに証明書が正しくインストールされていると表示されていても、証明書は信頼できないと主張しています。
Chromeに証明書を受け入れてもらい、その不平を言うのをやめるにはどうすればよいですか。
localhost
のみ:
これをあなたのクロムに貼り付けるだけです。
chrome://flags/#allow-insecure-localhost
強調表示されたテキストが表示されるはずです。localhostからロードされたリソースに対して無効な証明書を許可する
Enable
をクリックしてください。
これは私のために働いた:
Chrome Settings > Show advanced settings > HTTPS/SSL > Manage Certificates
を開きます。Authorities
タブをクリックし、下にスクロールして、証明書に付けた組織名の下に自分の証明書を見つけます。あなたは今あなたのページにNice green lockをかけるべきです。
編集: 新しいマシンでこれを再試行しましたが、赤い信頼できない証明書ページから続行するだけで、証明書の管理ウィンドウに証明書が表示されませんでした。私は次のことをしなければなりませんでした:
https://
は赤で表示されています)で、カギ>証明書情報の順にクリックします。 注: chromeの新しいバージョンでは、Developer Tools > Security
を開いてView certificate
を選択する必要があります。Details tab > Export
をクリックしてください。ファイル形式としてPKCS #7, single certificate
を選択してください。Authorities tab > Import
をクリックして証明書をエクスポートしたファイルを選択し、必ず選択してくださいPKCS #7, single certificate
ファイルタイプとしてを選択します。CHROME 58+のアップデート(2017-04-19リリース済み)
Chrome 58現在、commonName
のみを使用してホストを識別しています 削除中 。 ここでの議論 および ここでのバグ追跡 を参照してください。以前は、subjectAltName
はマルチホスト証明書にのみ使用されていたため、一部の内部CAツールにはマルチホスト証明書が含まれていません。
過去に自己署名証明書が正常に機能していたが、Chrome 58で突然エラーを生成し始めた場合、これが理由です。
そのため、自己署名証明書(または自己署名CAによって署名された証明書)を生成するために使用する方法は何でも、サーバーの証明書に適切なsubjectAltName
および/またはDNS
エントリ/エントリを持つIP
が含まれていることを確認してください単一のホスト用であっても。
Opensslの場合、これは OpenSSL config (Ubuntuでは/etc/ssl/openssl.cnf
)が単一のホストに対して次のようなものになることを意味します。
[v3_ca] # and/or [v3_req], if you are generating a CSR
subjectAltName = DNS:example.com
または複数のホストの場合:
[v3_ca] # and/or [v3_req], if you are generating a CSR
subjectAltName = DNS:example.com, DNS:Host1.example.com, DNS:*.Host2.example.com, IP:10.1.2.3
Chromeの証明書ビューアー(F12の[セキュリティ]タブに移動)で、Extensions
の下にCertificate Subject Alternative Name
としてリストされます。
Macでは、キーチェーンアクセスユーティリティを使用して自己署名証明書をシステムキーチェーンに追加すると、Chromeがそれを受け入れます。私はここでステップバイステップの説明を見つけました:
Google Chrome、Mac OS X、および自己署名SSL証明書
基本的に:
UPDATE 11/2017:この答えはおそらくChromeの新しいバージョンのほとんどではうまくいかないでしょう。
2016年2月2日更新:Macユーザー向けのより良い説明書は こちら にあります。
追加したいサイトで、アドレスバーの赤いロックアイコンを右クリックします。
接続 というラベルの付いたタブをクリックし、次に 証明書情報 をクリックします。
詳細 タブをクリックし、ボタン ファイルへコピー... をクリックします。これで証明書のエクスポートウィザードが開きます。 次へ をクリックして エクスポートファイル形式 画面に進みます。
DERエンコードバイナリX.509(.CER) を選択し、 次へ をクリックします。
参照... をクリックして、ファイルをコンピュータに保存します。わかりやすい名前を付けます。 次へ をクリックし、次に 終了 をクリックします。
Chromeの設定を開き、一番下までスクロールして、 詳細設定を表示... をクリックします。
HTTPS/SSL の下にある 証明書の管理... をクリックします。
信頼されたルート証明機関 タブをクリックし、次に インポート... ボタンをクリックします。これにより証明書のインポートウィザードが開きます。 次へ をクリックして インポートするファイル 画面に進みます。
参照... をクリックして先ほど保存した証明書ファイルを選択し、次に 次へ をクリックします。
すべての証明書を次のストアに配置します 。選択されたストアは 信頼されたルート証明機関 であるべきです。そうでない場合は、 参照... をクリックして選択します。 次へ および 終了 をクリック
セキュリティ警告で はい をクリックします。
Chromeを再起動してください。
Linuxを使用している場合は、この公式Wikiページにも従うことができます。
基本的に:
これで、次のコマンドは証明書を追加します(YOUR_FILEはエクスポートしたファイルです)。
certutil -d sql:$HOME/.pki/nssdb -A -t "P,," -n YOUR_FILE -i YOUR_FILE
すべての証明書を一覧表示するには、次のコマンドを実行してください。
certutil -d sql:$HOME/.pki/nssdb -L
それでもうまくいかない場合は、このバグの影響を受ける可能性があります。 問題55050:Ubuntu SSLエラー8179
P.S上記のコマンドを使用する前に、libnss3-tools
があることも確認してください。
お持ちでない場合は、次の方法でインストールしてください。
Sudo apt-get install libnss3-tools # on Ubuntu
Sudo yum install nss-tools # on Fedora, Red Hat, etc.
ボーナスとして、あなたは以下の便利なスクリプトを使うことができます:
$ cat add_cert.sh
certutil -d sql:$HOME/.pki/nssdb -A -t "P,," -n $1 -i $1
$ cat list_cert.sh
certutil -d sql:$HOME/.pki/nssdb -L # add '-h all' to see all built-in certs
$ cat download_cert.sh
echo QUIT | openssl s_client -connect $1:443 | sed -ne '/BEGIN CERT/,/END CERT/p'
使用法:
add_cert.sh [FILE]
list_cert.sh
download_cert.sh [DOMAIN]
--auto-ssl-client-auth
パラメータを付けてChromeを実行する
google-chrome --auto-ssl-client-auth
ページ上の任意の場所をクリックして、BYPASS_SEQUENCEと入力します。
"thisisunsafe
"はChromeバージョン65のBYPASS_SEQUENCEです
"badidea
" Chromeバージョン62 - 64。
以前のバージョンのChromeでは "danger
"が機能していました
入力フィールドを探す必要はありません。入力するだけです。それは奇妙に感じますがそれは働いています。
私はMac High Sierraで試した。
彼らが再びそれを変更したかどうかを二重チェックするためにはLatestクロムに行きなさい ソースコード
BYPASS_SEQUENCEを探すと、現時点では次のようになります。
var BYPASS_SEQUENCE = window.atob('dGhpc2lzdW5zYWZl');
偽装されていますが、実際のBYPASS_SEQUENCEを確認するには、ブラウザコンソールで次の行を実行します。
console.log(window.atob('dGhpc2lzdW5zYWZl'));
Macでは、次のようにしてシステムレベルでChromeとSafariから完全に信頼されている証明書を作成できます。
# create a root authority cert
./create_root_cert_and_key.sh
# create a wildcard cert for mysite.com
./create_certificate_for_domain.sh mysite.com
# or create a cert for www.mysite.com, no wildcards
./create_certificate_for_domain.sh www.mysite.com www.mysite.com
v3.ext
を使用して サブジェクト代替名の欠落エラーを回避します自分のルート認証局を使用して完全に信頼された新しい自己署名証明書を作成したい場合は、これらのスクリプトを使用してそれを実行できます。
#!/usr/bin/env bash
openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.pem
#!/usr/bin/env bash
if [ -z "$1" ]
then
echo "Please supply a subdomain to create a certificate for";
echo "e.g. www.mysite.com"
exit;
fi
if [ ! -f rootCA.pem ]; then
echo 'Please run "create_root_cert_and_key.sh" first, and try again!'
exit;
fi
if [ ! -f v3.ext ]; then
echo 'Please download the "v3.ext" file and try again!'
exit;
fi
# Create a new private key if one doesnt exist, or use the xeisting one if it does
if [ -f device.key ]; then
KEY_OPT="-key"
else
KEY_OPT="-keyout"
fi
DOMAIN=$1
COMMON_NAME=${2:-*.$1}
SUBJECT="/C=CA/ST=None/L=NB/O=None/CN=$COMMON_NAME"
NUM_OF_DAYS=999
openssl req -new -newkey rsa:2048 -sha256 -nodes $KEY_OPT device.key -subj "$SUBJECT" -out device.csr
cat v3.ext | sed s/%%DOMAIN%%/"$COMMON_NAME"/g > /tmp/__v3.ext
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days $NUM_OF_DAYS -sha256 -extfile /tmp/__v3.ext
# move output files to final filenames
mv device.csr "$DOMAIN.csr"
cp device.crt "$DOMAIN.crt"
# remove temp file
rm -f device.crt;
echo
echo "###########################################################################"
echo Done!
echo "###########################################################################"
echo "To use these files on your server, simply copy both $DOMAIN.csr and"
echo "device.key to your webserver, and use like so (if Apache, for example)"
echo
echo " SSLCertificateFile /path_to_your_files/$DOMAIN.crt"
echo " SSLCertificateKeyFile /path_to_your_files/device.key"
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = %%DOMAIN%%
自己署名証明書をChromeおよびSafariで完全に信頼できるようにするには、新しい認証局をMacにインポートする必要があります。そうするためには、これらの指示に従うか、またはこの一般的なプロセスに関するより詳細な指示に従ってください mitmproxyウェブサイト上の :
あなたはあなたのパスワードの入力を促すこのコマンドを使用して、コマンドラインで、2つの方法のうちの1つを行うことができます。
$ Sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain rootCA.pem
またはKeychain Access
アプリを使用して:
また、証明書を信頼するためにJavaクライアントが必要な場合は、証明書をJavaキーストアにインポートすることで信頼できます。変更された場合には更新する必要があるため、これによってキーストアから証明書がすでに存在する場合は削除されます。もちろん、これはインポートされている証明書に対してのみ行われます。
KEYSTORE="$(/usr/libexec/Java_home)/jre/lib/security/cacerts";
function running_as_root()
{
if [ "$EUID" -ne 0 ]
then echo "NO"
exit
fi
echo "YES"
}
function import_certs_to_Java_keystore
{
for crt in *.crt; do
echo prepping $crt
keytool -delete -storepass changeit -alias alias__${crt} -keystore $KEYSTORE;
keytool -import -file $crt -storepass changeit -noprompt --alias alias__${crt} -keystore $KEYSTORE
echo
done
}
if [ "$(running_as_root)" == "YES" ]
then
import_certs_to_Java_keystore
else
echo "This script needs to be run as root!"
fi
Macの場合 で、エクスポートタブが表示されない、または証明書を取得する方法が表示されない場合は、これが役に立ちます。
「証明書情報」をクリック
今、あなたはこれを見るべきです:
その小さな証明書アイコンをデスクトップ(またはどこかに)ドラッグします。
ダウンロードされた.cerファイルをダブルクリックしてください、これはあなたのキーチェーンにそれをインポートし、証明書のリストへのキーチェーンアクセスを開くはずです。
場合によっては、これで十分なので、ページを更新できます。
さもないと:
今問題のページをリロードすれば問題解決されるはずです!お役に立てれば。
これをもう少し簡単にするために、次のスクリプトを使うことができます( source ):
次の スクリプト をwhitelist_ssl_certificate.ssh
として保存します。
#!/usr/bin/env bash -e
SERVERNAME=$(echo "$1" | sed -E -e 's/https?:\/\///' -e 's/\/.*//')
echo "$SERVERNAME"
if [[ "$SERVERNAME" =~ .*\..* ]]; then
echo "Adding certificate for $SERVERNAME"
echo -n | openssl s_client -connect $SERVERNAME:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' | tee /tmp/$SERVERNAME.cert
Sudo security add-trusted-cert -d -r trustRoot -k "/Library/Keychains/System.keychain" /tmp/$SERVERNAME.cert
else
echo "Usage: $0 www.site.name"
echo "http:// and such will be stripped automatically"
fi
スクリプトを(シェルから)実行可能にします。
chmod +x whitelist_ssl_certificate.ssh
必要なドメイン用のスクリプトを実行します(URLの全機能をコピー/ペーストするだけです)。
./whitelist_ssl_certificate.ssh https://your_website/whatever
_更新済み_ 2016年4月3日
セキュリティエラーが発生してもChromeが処理を続行するためにエラーページに入力できる秘密のバイパスフレーズがあります。 thisisunsafe (Chromeの以前のバージョンでは、 badidea と、さらに以前の 危険 )。 DO _ not _ を使用してください正確に理解できない限り使用してください。
ソース:
https://chromium.googlesource.com/chromium/src/+/d8fc089b62cd4f8d907acff6fb3f5ff58f168697%5E%21/ /
(window.atob('dGhpc2lzdW5zYWZl')
はthisisunsafe
に解決されることに注意してください)
ソースの最新バージョンは@ https://chromium.googlesource.com/chromium/src/+/refs/heads/master/components/security_interstitials/core/browser/resources/interstitial_large.js およびwindow.atob
です。関数はJSコンソールで実行できます。
Chromeチームがバイパスフレーズを変更した理由(初めて)の背景
https://bugs.chromium.org/p/chromium/issues/detail?id=581189
"Proceed Anyway"オプションが利用できない場合や、バイパスフレーズが機能しない場合の一時的な一時停止の場合、このハックはうまく機能します。
このフラグを有効にしてlocalhost
からの証明書エラーを許可します(Chromeはフラグ値を変更した後に再起動が必要です)。
chrome://flags/#allow-insecure-localhost
(そして投票の回答 https://stackoverflow.com/a/31900210/430128 @Chrisによる)
接続したいサイトがlocalhost
であれば、完了です。それ以外の場合は、TCPトンネルを設定してポート8090でローカルに待機し、ポート443でbroken-remote-site.com
に接続します。socat
がインストールされていることを確認し、端末ウィンドウで次のように実行します。
socat tcp-listen:8090,reuseaddr,fork tcp:broken-remote-site.com:443
ブラウザで https:// localhost:8090 にアクセスします。
テスト環境用
Chromeを起動するときに--ignore-certificate-errors
をコマンドラインパラメータとして使用できます(Ubuntuのバージョン28.0.1500.52で作業中)。
これによりエラーが無視され、警告なしに接続されます。すでにchromeのバージョンを実行している場合は、コマンドラインから再起動する前にこれを閉じる必要があります。そうしないと新しいウィンドウが開きますが、パラメータは無視されます。
テストサーバーには有効な証明書がないため、デバッグを行うときには、この方法でクロムを起動するようにIntellijを構成します。
証明書の確認は重要なセキュリティ機能であるため、このような通常のブラウジングはお勧めしませんが、これは一部の人には役立つ場合があります。
誰かが指摘したように、ブラウザウィンドウだけではなく、Chromeのすべてを再起動する必要があります。これを行う最も速い方法はタブを開くことです...
chrome://restart
WINDOWS 6月/ 2017 Windows Server 2012
私は@Brad Parksの回答に従った。 Windowsでは、Trusted Root Certificates AuthoritiesストアにrootCA.pemをインポートする必要があります。
私は以下の手順を実行しました。
openssl genrsa -out rootCA.key 4096
openssl req -x509 -new -nodes -key rootCA.key -newkey rsa:4096 -sha256 -days 1024 -out rootCA.pem
openssl req -new -newkey rsa:4096 -sha256 -nodes -keyout device.key -out device.csr
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 2000 -sha256 -extfile v3.ext
V3.extは次のとおりです。
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = localhost
IP.1 = 192.168.0.2
IP.2 = 127.0.0.1
それから、私の場合は自己ホスト型のWebアプリケーションを使用しているので、証明書をIPアドレスとポートにバインドする必要があります。証明書は秘密鍵情報とともにMYストアにあるので、pfx形式にエクスポートします。
openssl pkcs12 -export -out device.pfx -inkey device.key -in device.crt
Mmcコンソール(ファイル/スナップインの追加と削除/証明書/追加/コンピュータアカウント/ローカルコンピュータ/ OK)を使用して、パーソナルストアにpfxファイルをインポートしました。
後で証明書をバインドするためにこのコマンドを使いました(あなたはHttpConfigツールを使うこともできます):
netsh http add sslcert ipport=0.0.0.0:12345 certhash=b02de34cfe609bf14efd5c2b9be72a6cb6d6fe54 appid={BAD76723-BF4D-497F-A8FE-F0E28D3052F4}
certhash =証明書Thumprint
appid = GUID(あなたの選択)
最初に、信頼されたルート証明機関の証明書 "device.crt"をさまざまな方法でインポートしようとしましたが、それでも同じエラーが発生します。
しかし、ドメインの証明書ではなく、ルート認証局の証明書をインポートする必要があることに気付きました。そのため、mmcコンソール(ファイル/スナップインの追加と削除/証明書/追加/コンピュータアカウント/ローカルコンピュータ/ OK)を使用して、信頼できるルート証明機関ストアにrootCA.pemをインポートしました。
Chromeを再起動してください。
Localhostの場合:
またはIPアドレス付き:
私が達成できなかった唯一のことは、それが時代遅れの暗号(写真の赤い四角)を持っているということです。この点で助けは大歓迎です。
MakecertではSAN情報を追加することはできません。 New-SelfSignedCertificate(Powershell)を使えば、SAN情報を追加でき、それも機能します。
サイトのアドレスが証明書と同じであることを確認していますか? Chromeと自己署名証明書についても同じ問題がありましたが、最終的には証明書のドメイン名の検証について非常にうるさいことがわかりました。
Chromeは独自の証明書ストアを持っておらず、Window自身を使用しています。ただし、Chromeには証明書をストアにインポートする方法がないため、代わりにIEを使用して証明書を追加する必要があります。
Internet Explorerに証明書をインストールする
また、自己署名証明書を作成するためのいくつかの異なるアプローチについても見てください(私はあなたが言及していないようにIISを使っていると思います)。
URLの横にある小さな×印のアイコンをクリックすると、次のようなボックスが表示されます。
証明書情報 リンクをクリックすると、次のダイアログが表示されます。
それはどの証明書ストアが正しいものかを教えてくれます、それは 信頼されたルート証明機関 storeです。
他の回答で概説されている方法の1つを使用してそのストアに証明書を追加することも、次のいずれかを使用することもできます。
certutil -addstore -user "ROOT" cert.pem
ROOT
は、前述の証明書ストアの内部名です。cert.pem
は自己署名証明書の名前です。私はbjnordが提案したものを使用するプロセスを踏みました: Google Chrome、Mac OS Xおよび自己署名SSL証明書
ブログに表示されているものが機能しませんでした。
しかし、ブログへのコメントの1つは金でした:
Sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain site.crt
どのようにしてcertファイルを入手するかについてのブログをたどる必要があるでしょう。
この投稿には既に回答が殺到していますが、bashスクリプト他の回答に基づいて自己署名TLS証明書の生成Chromeで有効)を作成しました(Chrome 65.x
でテスト済み))。他の人に役立つことを願っています。
証明書をインストールした後(and trust)、Chromeを再起動することを忘れないでください(chrome://restart
)
チェックアウトする価値があるもう1つのツールは、CloudFlareのcfssl
ツールキットです。
Linux上のChromium上でSSL証明書を管理するためのGUIが正しく機能しませんでした。しかし、彼らの文書は正しい答えを与えた。トリックは、自己署名SSL証明書をインポートする以下のコマンドを実行することでした。 <certificate-nickname>
とcertificate-filename.cer
の名前を更新してから、chromium/chromeを再起動してください。
ドキュメントから:
Linuxでは、ChromiumはNSS Shared DBを使用します。組み込みマネージャがうまくいかない場合は、NSSコマンドラインツールを使用して証明書を設定できます。
ツールを入手する
Debian/Ubuntu:
Sudo apt-get install libnss3-tools
Fedora:
su -c "yum install nss-tools"
Gentoo:
su -c "echo 'dev-libs/nss utils' >> /etc/portage/package.use && emerge dev-libs/nss"
(以下のすべてのコマンドをnss
という接頭辞を付けて起動する必要があります。例:nsscertutil
)opensuse:Sudo zypper install mozilla-nss-tools
自己署名サーバー証明書を信頼するには、 を使用します。
certutil -d sql:$HOME/.pki/nssdb -A -t "P,," -n <certificate-nickname> -i certificate-filename.cer
すべての証明書を一覧表示する
certutil -d sql:$HOME/.pki/nssdb -L
TRUSTARGSは、コンマで区切られた0個以上の英字の3つのストリングです。それらは、証明書がSSL、電子メール、およびオブジェクトの署名に対してどのように信頼されるべきかを定義しており、certutilのドキュメントまたはMeenaの信頼フラグに関するブログ投稿で説明されています。
SSLクライアント認証用の個人証明書と秘密鍵を追加するコマンドを使用します。
pk12util -d sql:$HOME/.pki/nssdb -i PKCS12_file.p12
pKCS#12ファイルに格納されている個人証明書と秘密鍵をインポートします。個人証明書の信頼度は「u、u、u」に設定されます。
証明書を削除する
certutil -d sql:$HOME/.pki/nssdb -D -n <certificate nickname>
抜粋: https://chromium.googlesource.com/chromium/src/+/HEAD/docs/linux_cert_management.md
Chrome 58以降、SANが見つからないため、 macOS で証明書エラーが発生し始めました。これがまたアドレスバーの緑色のロックを取得する方法です。
次のコマンドで新しい証明書を生成します。
openssl req \
-newkey rsa:2048 \
-x509 \
-nodes \
-keyout server.key \
-new \
-out server.crt \
-subj /CN=*.domain.dev \
-reqexts SAN \
-extensions SAN \
-config <(cat /System/Library/OpenSSL/openssl.cnf \
<(printf '[SAN]\nsubjectAltName=DNS:*.domain.dev')) \
-sha256 \
-days 720
server.crt
をKeyChainにインポートしてから証明書をダブルクリックし、 Trust を展開してAlways Trustを選択します。
Google Chromeで https://domain.dev のページを更新すると、緑色の錠が元に戻ります。
2017-06-27最新の方法:
openssl req \
-newkey rsa:2048 \
-x509 \
-nodes \
-keyout yoursite.key \
-new \
-out yoursite.crt \
-subj /CN=yoursite.dev \
-reqexts SAN \
-extensions SAN \
-config <(cat /System/Library/OpenSSL/openssl.cnf \
<(printf '[SAN]\nsubjectAltName=DNS:yoursite.dev')) \
-sha256 \
-days 3650
次に、yoursite.crtとyoursite.keyをnginxの設定に追加します。
から: https://github.com/webpack/webpack-dev-server/issues/854
ブラウザに証明書をインポートしようとしたときにうまくいきませんでした... chromeで[開発者ツール]> [セキュリティ]を開き、[証明書の表示]を選択します。詳細タブをクリックしてエクスポートします。
// LINUX
Sudo apt-get install libnss3-tools
certutil -d sql:$HOME/.pki/nssdb -A -t "P,," -n [EXPORTED_FILE_PATH] -i [EXPORTED_FILE_PATH]
このコマンドを実行して、インポートしたファイルが表示されたら、行ってもいいでしょう。
certutil -d sql:$HOME/.pki/nssdb -L
// Windows
Start => run => certmgr.msc
左側で[信頼されたルート証明機関] => [個人]を選択します。 actionsタブ=> All actions/importをクリックしてから、ブラウザから以前にエクスポートしたファイルを選択してください。
クロムを再起動することを忘れないでください!
がんばろう! ;)
安全でないローカルホストを許可するには、chrome:// flags /#allow-insecure-localhostを使用します。
開発用ホスト名をxxx.localhostに作成する必要があります。
これは私のために働きました。参照先: http://www.robpeck.com/2010/10/google-chrome-mac-os-x-and-self-signed-ssl-certificates/#.Vcy8_ZNVhBc
アドレスバーで、Xの付いた小さな錠をクリックします。これにより、小さな情報画面が表示されます。 「証明書情報」というボタンをクリックします。
画像をクリックしてデスクトップにドラッグします。ちょっとした証明書のようです。
それをダブルクリックしてください。これにより、キーチェーンアクセスユーティリティが起動します。ロックを解除するには、パスワードを入力してください。
必ずログインキーチェーンではなく、システムキーチェーンに証明書を追加してください。これは何もしないようですが、[常に信頼する]をクリックします。
追加したら、ダブルクリックします。もう一度認証する必要があります。
[信頼]セクションを展開します。
「この証明書を使用する場合は、「常に信頼する」に設定します。
特にMac OS X Yosemite上のGoogle Chromeの場合、これは今後も続くことです。
ありがたいことに、私たちの開発チームの1人が今日このリンクを私に送ってくれました、そしてあなたが証明書を受け入れるサイトをあなたが制御することをまだ可能にしながらこの方法は確実に働きます。
jersullyの投稿:
内部証明書に煩わされたくないのであれば...
- アドレスバーに
chrome://flags/
を入力してください。- 指定された期間SSLエラーを続行するには、[決定を記憶する]までスクロールするか検索します。
- [3か月間保存する]を選択します。
FedoraとUbuntuの場合、guiを使って証明書を追加するときにexample.com Not a Certification authority
エラーが発生した場合は、新しいルート認証局を追加してください。
Chromeからエクスポートされた証明書を使って次のことを試してみてください。どんなフォーマットでも動作します(base64 chain/singe、pkcs 7、der binaryなど)。すべてのguiメソッドが惨めに失敗したとき、これは私のために働きました。
certutil -d sql:$HOME/.pki/nssdb -A -t "P,," -n <certificate nickname> \
-i <certificate filename>
変更を確認するには、クロムを再起動し、必要に応じてバックグラウンドから削除します。 Firefoxはまだ文句を言うでしょう。
必要に応じて後で削除するには、Chrome - >設定 - >詳細設定 - >証明書の管理 - >サーバーの順に選択します。削除された場所に表示されます。
出典、警告、非常にむらのある、部分的に古くなっている: https://chromium.googlesource.com/chromium/src/+/HEAD/docs/linux_cert_management.md
Chromeに証明書を受け入れてもらい、その不平を言うのをやめるにはどうすればよいですか。
でPKIを作成する必要があります。
1)自己署名ルートCA.
2)サブ/中間証明書[ルートCAによって署名された]。
3)通常/エンドエンティティ証明書[ルートCAまたはサブCAのいずれかによって署名された](localhostとしてcommonNameまたはsubjectAltName(SAN))(URIとして https:// localhost/ も含む) SANで)。
4)あなたのWindows OSにそのルートCAをインポート/インストールする(あなたがIEに言及したので。GoogleChromeは証明書チェーンを探す際に同じリソースを使っている - https://www.chromium.org/Home/ 'Trusted Root Certification Authorities'としてのchromium-security/root-ca-policy )。
5)そのエンドエンティティ証明書をWebサーバー証明書としてインストールすると、そのエラーメッセージの不平を言うのをやめます。
お役に立てれば。
適切なSSL認定を受けているブラウザの設定を変更することなく、私は自分自身でこの問題を解決しました。私はMacを使用しているので、SSL認証のキーチェーンを更新する必要がありました。私はそれを受け入れるためにクロムのためにssl認証に件名を追加しなければなりませんでした。今日の時点で、これはChromeのバージョン番号のためのものです:62.0.3202.94
私の例は使いやすいコマンドと設定ファイルです:
これらのファイルを追加すると、この例はすべて1つのルートディレクトリにあります
ssl.conf
[ req ]
default_bits = 4096
distinguished_name = req_distinguished_name
req_extensions = req_ext
[ req_distinguished_name ]
countryName = Country Name (2 letter code)
stateOrProvinceName = State or Province Name (full name)
localityName = Locality Name (eg, city)
organizationName = Organization Name (eg, company)
commonName = Common Name (e.g. server FQDN or YOUR name)
commonName_max = 64
[ req_ext ]
subjectAltName = @alt_names
[alt_names]
DNS.1 = localhost
認証を作成するためのコマンドを実行します。
openssl req -newkey rsa:4096 -nodes -keyout key.pem -x509 -days 3650 -out certificate.pem -extensions req_ext -config ssl.conf -subj '/CN=localhost/O=Stackflow/C=US/L=Los Angeles/OU=StackflowTech'
信頼できる証明書を追加するだけのMacの場合(必須):
Sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ./certificate.pem
窓のためにあなたは私たちのssl証明書をローカルに独立して検証する方法を見つける必要があるでしょう。私はWindowsを使いません。すみません、windowsみんなとギャル。
私はnode.jsサーバーをexpress.jsと一緒に使用していますが、私の鍵と証明書は次のようなものだけが必要です。
app.js
const https = require('https');
const Express = require('express');
const fs = require('fs');
const app = new Express();
const server = https.createServer({
key: fs.readFileSync('./key.pem'),
cert: fs.readFileSync('./certificate.pem'),
}, app);
server.listen(3000);
私は将来他のバックエンドフレームのためにこれをしているかもしれないので、私は将来他の人のためにこれの例を更新することができます。しかし、これはその問題に対するNode.jsの私の修正でした。ブラウザのキャッシュをクリアし、https://でアプリを実行してください。
これは、MacユーザーのためにNode.jsサーバー上で https:// localhost を実行する例です。
https://github.com/laynefaler/Stack-Overflow-running-HTTPS-localhost
ハッピーコーディング!
MacOS上のChromeの場合は、証明書を準備しています。
私は kellen を付けて重要な Toby J からの更新)で答えに続いて成功したが、この改訂をしなければならなかった:
自己署名証明書を作成するときは、v3_ca
ではなく、新しいsubjectAltName
フィールドをv3_req
拡張子の下に配置する必要がありました。私は/etc/ssl/openssl.conf
を一時ファイルにコピーしてからsubjectAltName = DNS:*.example.com
の下に[ v3_ca ]
という行を追加しました。それから、そのファイルをcert creationコマンドに渡します。
openssl req -x509 -nodes -newkey rsa:2048 \
-config /tmp/openssl-revised.cfg \
-keyout example.com.key -out example.com.crt
そして kellen's の更新されたステップに従った。
Windows上のChromeを修正しました。
まず、証明書をエクスポートする必要があります。
インポートする
私はmacosxでChromeランチャーを微調整しなければならず、以下のスクリプトを追加しました。以下のように保存しました。
/ Applications/Google\Chrome.app/Contents/MacOS/Chrome.command
#!/bin/sh
RealBin="Google Chrome"
AppDir="$(dirname "$0")"
exec "$AppDir/$RealBin" --ignore-certificate-errors "$@"
このスクリプトを使用してChromeを起動すると、自己署名証明書は問題なく機能しています。しかし このスクリプトで起動されたブラウザでWebを閲覧しないでください あなたは無効な証明書について警告されないでしょう!
mkdir CA
openssl genrsa -aes256 -out CA/rootCA.key 4096
openssl req -x509 -new -nodes -key CA/rootCA.key -sha256 -days 1024 -out CA/rootCA.crt
openssl req -new -nodes -keyout example.com.key -out domain.csr -days 3650 -subj "/C=US/L=Some/O=Acme, Inc./CN=example.com"
openssl x509 -req -days 3650 -sha256 -in domain.csr -CA CA/rootCA.crt -CAkey CA/rootCA.key -CAcreateserial -out example.com.crt -extensions v3_ca -extfile <(
cat <<-EOF
[ v3_ca ]
subjectAltName = DNS:example.com
EOF
)
Windowsでの開発目的のためにあなたはすることができます
Chromeのショートカットフラグ--ignore-certificate-errors
に追加
証明書エラーを無視し、無効な証明書Webサイトにアクセスできるようにすることを想定していました。
https://support.opendns.com/entries/66657664 に詳細な説明があります。
同じ問題が発生していました。証明書をWindowsの信頼されたルート機関ストアにインストールしましたが、Chromeはまだ証明書を拒否しました。エラーはERR_CERT_COMMON_NAME_INVALID
です。証明書がストアに正しくインストールされていない場合、エラーはERR_CERT_AUTHORITY_INVALID
です。
エラーの名前、 このコメント 、および この質問 によって示唆されているように、問題は証明書の宣言されたドメイン名にあります。 証明書の生成中に "Common Name"の入力を求められたら、ドメイン名を入力する必要がありました サイトへのアクセスに使用していました(私の場合はlocalhost
)。私はchrome://restart
を使用してChromeを再起動しましたが、ついにこの新しい証明書に満足しました。
SSL/HTTPS localhostがmac/osxに修正されました:
Chrome v58以降が信頼するWindowsで自己署名証明書を作成するには、権限を昇格してPowershellを起動し、次のように入力します。
New-SelfSignedCertificate -CertStoreLocation Cert:\LocalMachine\My -Subject "fruity.local" -DnsName "fruity.local", "*.fruity.local" -FriendlyName "FruityCert" -NotAfter (Get-Date).AddYears(10)
#notes:
# -subject "*.fruity.local" = Sets the string subject name to the wildcard *.fruity.local
# -DnsName "fruity.local", "*.fruity.local"
# ^ Sets the subject alternative name to fruity.local, *.fruity.local. (Required by Chrome v58 and later)
# -NotAfter (Get-Date).AddYears(10) = make the certificate last 10 years. Note: only works from Windows Server 2016 / Windows 10 onwards!!
これを行うと、証明書は Personal\Certificates ストアの下のローカルコンピュータの証明書に保存されます。
この証明書を 信頼されたルート証明機関\ Certificates にコピーします。
これを行う1つの方法:Windowsのスタートボタンをクリックして、certlm.msc
と入力します。次に、新しく作成した証明書を下のスクリーンショットの 信頼されたルート証明機関\ Certificates ストアにドラッグアンドドロップします。
Filippo Valsordaは、クロスストアツール mkcert
を作成し、これを lots のトラストストアに対して行いました。私は、この質問に対する答えが非常に多い同じ理由で彼が書いたと推測します。信頼できるルートCAによって署名されたSubjectAltName証明書に対して「正しい」ことをするのは苦痛です。
mkcert
は、Windows、macOS、およびいくつかのLinuxフレーバーの主要なパッケージ管理システムに含まれています。
mkcert
mkcert
は、ローカルで信頼された開発証明書を作成するためのシンプルなツールです。設定は不要です。$ mkcert -install Created a new local CA at "/Users/filippo/Library/Application Support/mkcert" ???? The local CA is now installed in the system trust store! ⚡️ The local CA is now installed in the Firefox trust store (requires browser restart)! ???? $ mkcert example.com "*.example.com" example.test localhost 127.0.0.1 ::1 Using the local CA at "/Users/filippo/Library/Application Support/mkcert" ✨ Created a new certificate valid for the following names ???? - "example.com" - "*.example.com" - "example.test" - "localhost" - "127.0.0.1" - "::1" The certificate is at "./example.com+5.pem" and the key at "./example.com+5-key.pem" ✅
私の解決策と説明:
IISリソースキットツール SelfSSL.exe で作成した自己署名証明書がありました。ローカルコンピューターの証明書リストで、この自己署名証明書には1つだけ目的:サーバー認証があることがわかりました。そこで、両方の目的で新しい自己署名証明書を作成しました:サーバー認証およびクライアント認証。そして今、Chromeはもう文句を言いません。
この記事 は、自己署名証明書を生成する多くの方法を示しています。すべてのオプションで証明書の目的を指定できるわけではないことに注意してください。 PowerShellの方法を使用しました。
$cert = New-SelfSignedCertificate -certstorelocation cert:\localmachine\my -dnsname company.co.nz
注:このように answer by kellen Chromeを使用すると、証明書の目的を設定できますが、IMOでは、最後の証明書が念頭に置いて。
ローカルでテストするときに上記の答えのどれもWindows 10で私を助けませんでした
https://localhost:<port>
。
しかし、私はこのページを見つけました。渡すべき別のフラグを示しています。
https://www.chromium.org/blink/serviceworker/service-worker-faq
自己署名証明書を使用して https:// localhost をテストする場合は、次の手順を実行します。
$ ./chrome --allow-insecure-localhost https:// localhost
それは赤い警告を取り除かなかった、しかしそれは私がサービスワーカーとウェブプッシュ通知のようなhttps-only機能を使うことを可能にした。
これは、opensslの代わりにJava 8 keytool.exeのみを使用するソリューションです。
@echo off
set PWD=changeit
set DNSNAME=%COMPUTERNAME%
echo create ca key
keytool -genkeypair -alias ca -keystore test.jks -keyalg RSA -validity 3650 -ext bc:critical=ca:true -dname "CN=CA" -storepass:env PWD -keypass:env PWD
echo generate cert request for ca signing
keytool -certreq -keystore test.jks -storepass:env PWD -alias ca -file ca.csr -ext bc:critical=ca:true
echo generate signed cert
keytool -gencert -keystore test.jks -storepass:env PWD -alias ca -infile ca.csr -outfile ca.cer -validity 3650 -ext bc:critical=ca:true
echo CA created. Import ca.cer in windows and firefox' certificate store as "Trusted CA".
pause
echo create server cert key for %DNSNAME%
keytool -genkeypair -alias leaf -keystore test.jks -keyalg RSA -validity 3650 -ext bc=ca:false -ext san=dns:%DNSNAME%,dns:localhost,ip:127.0.0.1 -dname "CN=Leaf" -storepass:env PWD -keypass:env PWD
echo generate cert request
keytool -certreq -keystore test.jks -storepass:env PWD -alias leaf -file leaf.csr -ext bc=ca:false -ext san=dns:%DNSNAME%,dns:localhost,ip:127.0.0.1
echo generate signed cert
keytool -gencert -keystore test.jks -storepass:env PWD -alias ca -infile leaf.csr -outfile leaf.cer -validity 3650 -ext bc=ca:false -ext san=dns:%DNSNAME%,dns:localhost,ip:127.0.0.1
rem see content
rem keytool -printcert -file leaf.cer -storepass:env PWD
echo install in orig keystore
keytool -importcert -keystore test.jks -storepass:env PWD -file leaf.cer -alias leaf
echo content of test.jks:
keytool -list -v -storepass:env PWD -keystore test.jks
pause
ファイルの代わりにパイプを使用することもできますが、ファイルを使用すると、何か問題が発生した場合に中間結果を確認できます。 SSLは、Windows上のIE11、Edge、FF54、Chrome60、およびAndroid上のChrome60でテストされています。
スクリプトを使用する前にデフォルトのパスワードを変更してください。