1549

我为 localhost CN 创建了一个自签名 SSL 证书。正如预期的那样,Firefox 在最初抱怨它后接受了这个证书。然而,Chrome 和 IE 拒绝接受它,即使在将证书添加到受信任根下的系统证书存储区之后也是如此。即使当我在 Chrome 的 HTTPS 弹出窗口中单击“查看证书信息”时,证书被列为正确安装,它仍然坚持证书不可信。

我应该怎么做才能让 Chrome 接受证书并停止抱怨它?

4

48 回答 48

1028

localhost只为

只需将其粘贴到您的 chrome 中:

chrome://flags/#allow-insecure-localhost

您应该会看到突出显示的文本: Allow invalid certificate for resources loaded from localhost

单击Enable

-或者-

尝试在窗口的任何位置输入: thisisunsafe ,浏览器*应该*让您访问该页面。[关联]

-或者-

对于避免神秘命令、专业知识和手动步骤的本地自签名证书,请尝试mkcert

于 2015-08-09T01:52:39.923 回答
541

这对我有用:

  1. 使用 Chrome,通过 HTTPS 在您的服务器上点击一个页面,然后继续通过红色警告页面(假设您还没有这样做)。
  2. 打开Chrome Settings > Show advanced settings > HTTPS/SSL > Manage Certificates
  3. 单击Authorities选项卡并向下滚动以在您提供给证书的组织名称下找到您的证书。
  4. 选择它,单击编辑(注意:在最新版本的 Chrome 中,该按钮现在是“高级”而不是“编辑”),选中所有框并单击确定。您可能需要重新启动 Chrome。

您现在应该在您的页面上获得漂亮的绿色锁。

编辑:我在新机器上再次尝试了这个,证书没有出现在“管理证书”窗口中,只是从红色的不受信任的证书页面继续。我必须执行以下操作:

  1. 在带有不受信任证书的页面上(https://以红色划掉),单击锁 > 证书信息。注意:在较新版本的 chrome 上,您必须打开Developer Tools > Security,然后选择View certificate.
  2. 单击Details tab > Export。选择PKCS #7, single certificate作为文件格式。
  3. 然后按照我原来的说明进入“管理证书”页面。单击Authorities tab > Import并选择您将证书导出到的文件,并确保选择 PKCS #7, single certificate 作为文件类型
  4. 如果提示证书存储,请选择受信任的根证书颁发机构
  5. 选中所有框,然后单击确定。重新启动 Chrome。
于 2013-02-25T21:14:06.620 回答
371

只需5 个命令, openssl您就可以完成此任务。

请不要更改您的浏览器安全设置。

使用以下代码,您可以 (1) 成为您自己的 CA,(2) 然后将您的 SSL 证书签署为 CA。(3) 然后将 CA 证书(不是 SSL 证书,它进入您的服务器)导入 Chrome/Chromium。(是的,这甚至适用于 Linux。)

注意:对于 Windows,一些报告说openssl必须运行winpty以避免崩溃。

######################
# Become a Certificate Authority
######################

# Generate private key
openssl genrsa -des3 -out myCA.key 2048
# Generate root certificate
openssl req -x509 -new -nodes -key myCA.key -sha256 -days 825 -out myCA.pem

######################
# Create CA-signed certs
######################

NAME=mydomain.com # Use your own domain name
# Generate a private key
openssl genrsa -out $NAME.key 2048
# Create a certificate-signing request
openssl req -new -key $NAME.key -out $NAME.csr
# Create a config file for the extensions
>$NAME.ext cat <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = $NAME # Be sure to include the domain name here because Common Name is not so commonly honoured by itself
DNS.2 = bar.$NAME # Optionally, add additional domains (I've added a subdomain here)
IP.1 = 192.168.0.13 # Optionally, add an IP address (if the connection which you have planned requires it)
EOF
# Create the signed certificate
openssl x509 -req -in $NAME.csr -CA myCA.pem -CAkey myCA.key -CAcreateserial \
-out $NAME.crt -days 825 -sha256 -extfile $NAME.ext

回顾一下:

  1. 成为 CA
  2. 使用您的 CA 证书+密钥签署您的证书
  3. 在 Chrome 设置(设置 > 管理证书 > 权限 >导入)中myCA.pem作为“权限”(而不是“您的证书”)导入
  4. 使用服务器中的$NAME.crt$NAME.key文件

额外步骤(至少对于 Mac):

  1. 在“文件 > 导入文件”中导入 CA 证书,然后在列表中找到它,右键单击它,展开“>信任”,然后选择“始终”
  2. extendedKeyUsage=serverAuth,clientAuth在下面添加basicConstraints=CA:FALSE,并确保将“CommonName”设置为与$NAME要求设置时相同

您可以检查您的工作以确保正确构建证书:

openssl verify -CAfile myCA.pem -verify_hostname bar.mydomain.com mydomain.com.crt
于 2020-03-03T23:05:32.837 回答
238

单击页面上的任意位置并键入 BYPASS_SEQUENCE

" thisisunsafe" 是 Chrome 版本 65 的 BYPASS_SEQUENCE

" badidea" Chrome 版本 62 - 64。

" danger" 曾经在早期版本的 Chrome 中工作

您无需查找输入字段,只需键入即可。感觉很奇怪,但它正在工作。

我在 Mac High Sierra 上试过了。

要仔细检查他们是否再次更改它,请转到最新的铬源代码

要查找 BYPASS_SEQUENCE,目前它看起来像这样:

var BYPASS_SEQUENCE = window.atob('dGhpc2lzdW5zYWZl');

现在他们已经伪装了它,但要查看真正的 BYPASS_SEQUENCE,您可以在浏览器控制台中运行以下行。

console.log(window.atob('dGhpc2lzdW5zYWZl'));
于 2017-12-05T05:08:47.763 回答
181

Chrome 58+ 更新(2017-04-19 发布)

commonName 从 Chrome 58 开始,删除了仅使用来识别主机的功能。现在必须使用证书subjectAltName来识别它们的主机。请参阅此处的进一步讨论和此处错误跟踪器。过去,subjectAltName仅用于多主机证书,因此某些内部 CA 工具不包含它们。

如果您的自签名证书过去运行良好,但突然开始在 Chrome 58 中产生错误,这就是原因。

因此,无论您使用哪种方法来生成自签名证书(或由自签名 CA 签名的证书),请确保服务器的证书包含subjectAltName具有正确DNS和/或IP条目/条目的 a,即使它仅适用于单个主机.

对于 openssl,这意味着您的 OpenSSL 配置/etc/ssl/openssl.cnf在 Ubuntu 上)对于单个主机应该具有类似于以下内容的内容:

[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

Chrome 证书查看器

于 2017-03-21T02:12:19.700 回答
151

在 Mac 上,您可以使用 Keychain Access 实用程序将自签名证书添加到系统钥匙串中,然后 Chrome 将接受它。我在这里找到了分步说明:

Google Chrome、Mac OS X 和自签名 SSL 证书

基本上:

  1. 双击带有 X 的锁形图标并将证书图标拖放到桌面,
  2. 打开此文件(以 .cer 扩展名结尾);这将打开允许您批准证书的钥匙串应用程序。
于 2011-10-31T15:56:01.473 回答
123

在 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,以避免主题替代名称丢失错误

如果您想使用您自己的根权限创建一个完全受信任的新自签名证书,您可以使用这些脚本来完成。

create_root_cert_and_key.sh

    #!/usr/bin/env bash
    openssl genrsa -out rootCA.key 2048
    openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.pem

create_certificate_for_domain.sh

    #!/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=825
    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"

v3.ext

    authorityKeyIdentifier=keyid,issuer
    basicConstraints=CA:FALSE
    keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
    subjectAltName = @alt_names
    
    [alt_names]
    DNS.1 = %%DOMAIN%%

又一步 - 如何使自签名证书在 Chrome/Safari 中完全受信任

要让自签名证书在 Chrome 和 Safari 中完全受信任,您需要将新的证书颁发机构导入您的 Mac。为此,请遵循这些说明,或者mitmproxy 网站上有关此一般过程的更详细说明:

您可以在命令行中使用以下两种方法之一执行此操作,该命令将提示您输入密码:

$ sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain rootCA.pem

或使用Keychain Access应用程序:

  1. 打开钥匙串访问
  2. 在“钥匙串”列表中选择“系统”
  3. 在“类别”列表中选择“证书”
  4. 选择“文件|导入项目...”
  5. 浏览到上面创建的文件“rootCA.pem”,选择它,然后单击“打开”
  6. 在“证书”列表中选择您新导入的证书。
  7. 单击“i”按钮,或右键单击您的证书,然后选择“获取信息”
  8. 展开“信任”选项
  9. 将“使用此证书时”更改为“始终信任”
  10. 关闭对话框,系统将提示您输入密码。
  11. 关闭并重新打开正在使用您的目标域的所有选项卡,它将安全地加载!

作为奖励,如果您需要 java 客户端信任证书,您可以通过将证书导入 java 密钥库来实现。请注意,如果它已经存在,这将从密钥库中删除证书,因为它需要更新它以防万一发生变化。当然,它只对正在导入的证书执行此操作。

import_certs_in_current_folder_into_java_keystore.sh

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
于 2017-04-27T19:20:54.030 回答
97

Linux

如果你使用 Linux,你也可以关注这个官方 wiki 页面:

基本上:

  • 单击带有 X 的锁定图标,
  • 选择证书信息
  • 转到详细信息选项卡
  • 单击导出...(另存为文件)

现在,以下命令将添加证书(其中 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

libnss3-toolsPS在您可以使用上述命令之前,请确保您拥有,。

如果没有,请通过以下方式安装:

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

于 2012-09-18T14:11:51.010 回答
93

更新 11/2017:此答案可能不适用于大多数较新版本的 Chrome。

更新 02/2016:可以在此处找到针对 Mac 用户的更好说明。

  1. 在您要添加的站点上,右键单击地址栏中的红色锁形图标:在此处输入图像描述

    1. 单击标有Connection的选项卡,然后单击Certificate Information

    2. 单击详细信息选项卡,单击按钮复制到文件...。这将打开证书导出向导,单击下一步进入导出文件格式屏幕。

    3. 选择DER 编码二进制 X.509 (.CER),点击下一步

    4. 单击浏览...并将文件保存到您的计算机。将其命名为描述性的。单击下一步,然后单击完成

    5. 打开 Chrome 设置,滚动到底部,然后点击显示高级设置...

    6. HTTPS/SSL下,单击管理证书...

    7. 单击受信任的根证书颁发机构选项卡,然后单击导入... 按钮。这将打开证书导入向导。单击“下一步”进入“要导入的文件”屏幕。

    8. 单击Browse...并选择您之前保存的证书文件,然后单击Next

    9. 选择将所有证书放在以下存储中。选择的存储应该是Trusted Root Certification Authorities。如果不是,请单击浏览...并选择它。单击下一步完成

    10. 在安全警告上单击是。

    11. 重新启动 Chrome。

于 2013-09-03T22:56:12.013 回答
86

2020年 4 月 23 日更新

Chromium 团队推荐

https://www.chromium.org/Home/chromium-security/deprecating-powerful-features-on-insecure-origins#TOC-Testing-Powerful-Features

快速超级简单的解决方案

尽管存在安全错误,但可以在错误页面中输入一个秘密绕过短语,以使 Chrome 继续运行:thisisunsafe(在早期版本的 Chrome 中,输入badidea,甚至更早,danger)。除非您完全了解为什么需要它,否则不要使用它!

来源:

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.jswindow.atob函数可以在一个 JS 控制台。

有关 Chrome 团队为何更改绕过短语(第一次)的背景信息:

https://bugs.chromium.org/p/chromium/issues/detail?id=581189

如果一切都失败了(解决方案#1)

如果“仍然继续”选项不可用,或者绕过短语也不起作用,则为了快速一次性使用,此 hack 效果很好:

  1. 通过启用此标志来允许出现证书错误localhost(注意 Chrome 需要在更改标志值后重新启动):

    chrome://flags/#allow-insecure-localhost

    (和@Chris的投票回答https://stackoverflow.com/a/31900210/430128 )

  2. 如果您要连接的站点是localhost,那么您就完成了。否则,设置 TCP 隧道以在本地侦听端口 8090 并连接到broken-remote-site.com端口 443,确保您已socat在终端窗口中安装并运行类似的内容:

    socat tcp-listen:8090,reuseaddr,fork tcp:broken-remote-site.com:443

  3. 在浏览器中转到https://localhost:8090 。

如果一切都失败了(解决方案#2)

类似于“如果一切都失败(解决方案#1)”,这里我们使用ngrok为我们的本地服务配置一个代理。因为您可以通过 TLS 访问 ngrok http 隧道(在这种情况下,它由 ngrok 使用有效证书终止),或者通过非 TLS 端点,浏览器不会抱怨无效证书。

下载并安装 ngrok,然后通过以下方式公开它ngrok.io

ngrok http https://localhost

ngrok 将启动并为您提供可以连接的主机名,所有请求都将通过隧道返回到您的本地计算机。

于 2016-08-12T20:38:08.997 回答
62

如果您在 Mac 上并且没有看到导出选项卡或如何获取这对我有用的证书:

  1. 点击 https:// 前面的锁
  2. 转到“连接”选项卡
  3. 点击“证书信息”

    现在你应该看到这个: 当然和你的不同信息应该被标记为可信(否则你可能不会在这里)

  4. 将那个小证书图标拖到您的桌面(或任何地方)。

  5. 双击已下载的 .cer 文件,这应将其导入您的钥匙串并打开钥匙串访问您的证书列表。

    在某些情况下,这已经足够了,您现在可以刷新页面。

    除此以外:

  6. 双击新添加的证书。
  7. 在信任下拉菜单下,将“使用此证书时”选项更改为“始终信任”

现在重新加载有问题的页面,应该可以解决问题了!希望这可以帮助。


沃尔夫编辑

为了使这更容易一点,您可以使用以下脚本(source):

  1. 将以下脚本另存为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
    
  2. 使脚本可执行(从 shell):

    chmod +x whitelist_ssl_certificate.ssh
    
  3. 为您想要的域运行脚本(只需复制/粘贴完整的 url 即可):

    ./whitelist_ssl_certificate.ssh https://your_website/whatever
    
于 2014-01-14T04:53:52.537 回答
35

对于测试环境

您可以--ignore-certificate-errors在启动 chrome 时用作命令行参数(在 Ubuntu 上使用版本 28.0.1500.52)。

这将导致它忽略错误并在没有警告的情况下连接。如果您已经运行了某个版本的 chrome,则需要在从命令行重新启动之前关闭它,否则它将打开一个新窗口但忽略参数。

我将 Intellij 配置为在进行调试时以这种方式启动 chrome,因为测试服务器从来没有有效的证书。

我不建议像这样正常浏览,因为证书检查是一项重要的安全功能,但这可能对某些人有所帮助。

于 2013-06-26T13:13:34.610 回答
30

WINDOWS 2017 年 6 月 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

然后,在我的例子中,我有一个自托管的网络应用程序,所以我需要将证书与 IP 地址和端口绑定,证书应该在我的商店中,带有私钥信息,所以我导出为 pfx 格式。

openssl pkcs12 -export -out device.pfx -inkey device.key -in device.crt

使用 mmc 控制台(文件/添加或删除管理单元/证书/添加/计算机帐户/LocalComputer/OK)我在个人商店中导入了 pfx 文件。

后来我用这个命令绑定证书(你也可以使用HttpConfig工具):

netsh http add sslcert ipport=0.0.0.0:12345 certhash=b02de34cfe609bf14efd5c2b9be72a6cb6d6fe54 appid={BAD76723-BF4D-497F-A8FE-F0E28D3052F4}

certash=证书指纹

appid=GUID(您的选择)

首先,我尝试以不同的方式在受信任的根证书颁发机构上导入证书“device.crt”,但我仍然遇到相同的错误:

在此处输入图像描述

但我意识到我应该导入根授权证书而不是域证书。所以我使用了 mmc 控制台(文件/添加或删除管理单元/证书/添加/计算机帐户/LocalComputer/OK)我在受信任的根证书颁发机构存储中导入了 rootCA.pem。

在此处输入图像描述

重新启动 Chrome,然后它就可以工作了。

使用本地主机:

在此处输入图像描述

或使用 IP 地址:

在此处输入图像描述

我唯一无法实现的是,它有过时的密码(图片上的红色方块)。在这一点上的帮助表示赞赏。

使用 makecert 无法添加 SAN 信息。使用 New-SelfSignedCertificate (Powershell) 您可以添加 SAN 信息,它也可以工作。

于 2017-06-06T19:30:03.343 回答
22

正如有人指出的那样,您需要重新启动所有 Chrome,而不仅仅是浏览器窗口。最快的方法是打开一个标签...

chrome://restart

于 2016-04-12T20:30:54.693 回答
18

mkcertFilippo Valsorda为许多信任商店编写了一个跨平台工具。SubjectAltName我认为他写它的原因与这个问题有很多答案的原因相同:为受信任的根 CA 签名的证书做“正确”的事情是一件痛苦的事情。

mkcert包含在 Windows、macOS 和几种 Linux 风格的主要包管理系统中。在测试强大功能的第 4 步的 Chromium 文档中也提到了这一点。

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" ✅
于 2019-08-15T14:15:48.933 回答
17
  1. 在受信任的根 CA 存储中添加 CA 证书。

  2. 转到 chrome 并启用此标志!

chrome://flags/#allow-insecure-localhost

最后,只需使用 *.me 域或任何有效域,如 *.com 和 *.net 并将它们维护在主机文件中。对于我的本地开发人员,我使用 *.me 或 *.com 以及维护如下的主机文件:

  1. 添加到主机。C:/windows/system32/drivers/etc/hosts

    127.0.0.1 nextwebapp.me

注意:如果在执行此操作时浏览器已经打开,错误将继续显示。所以,请关闭浏览器并重新开始。更好的是,隐身或开始新的会话以立即生效。

于 2019-12-12T10:03:22.427 回答
14

您确定提供该站点的地址与证书相同吗?我在使用 Chrome 和自签名证书时遇到了同样的问题,但最后我发现它对证书上的域名验证非常挑剔(应该如此)。

Chrome 没有自己的证书存储,而是使用 Window 自己的。但是 Chrome 无法将证书导入商店,因此您应该通过 IE 添加它们。

在 Google Chrome 中安装证书

在 Internet Explorer 中安装证书

还请看一下创建自签名证书的几种不同方法(我假设您使用的是 IIS,因为您没有提到)。

如何在 IIS 7 中创建自签名证书

于 2011-09-28T08:53:24.020 回答
9

我继续使用 bjnord 建议的过程: Google Chrome、Mac OS X 和自签名 SSL 证书

博客中显示的内容不起作用。

但是,该博客的评论之一是黄金:

sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain site.crt

您需要关注如何获取证书文件的博客,之后您可以使用上面的命令并且应该很好。

于 2016-04-06T20:54:33.097 回答
8

在 Linux 上的 Chromium 上管理 SSL 证书的 GUI 对我来说不能正常工作。但是,他们的文档给出了正确的答案。诀窍是运行下面导入自签名 SSL 证书的命令。只需更新 and 的名称<certificate-nickname>certificate-filename.cer然后重新启动 chromium/chrome。

从文档:

在 Linux 上,Chromium 使用 NSS 共享数据库。如果内置管理器不适合您,那么您可以使用 NSS 命令行工具配置证书。

获取工具

  • Debian/Ubuntu:sudo apt-get install libnss3-tools

  • 软呢帽: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 是由零个或多个字母字符组成的三个字符串,用逗号分隔。它们定义了 SSL、电子邮件和对象签名应如何信任证书,并在 certutil 文档或 Meena 的关于信任标志的博客文章中进行了解释。

为 SSL 客户端身份验证添加个人证书和私钥使用命令:

pk12util -d sql:$HOME/.pki/nssdb -i PKCS12_file.p12

导入存储在 PKCS #12 文件中的个人证书和私钥。个人证书的 TRUSTARGS 将设置为“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

于 2018-11-28T02:18:57.277 回答
8

通过此方法允许不安全的本地主机正常工作 chrome://flags/#allow-insecure-localhost

只是您需要将开发主机名创建为 xxx.localhost。

于 2019-03-19T00:11:01.277 回答
7

这对我有用。请参阅:http ://www.robpeck.com/2010/10/google-chrome-mac-os-x-and-self-signed-ssl-certificates/#.Vcy8_ZNVhBc

在地址栏中,单击带有 X 的小锁。这将打开一个小信息屏幕。单击“证书信息”按钮。

单击图像并将其拖动到桌面。它看起来像一个小证书。

双击它。这将打开钥匙串访问实用程序。输入您的密码以解锁它。

确保将证书添加到系统钥匙串,而不是登录钥匙串。单击“始终信任”,即使这似乎没有任何作用。

添加后,双击它。您可能需要再次进行身份验证。

展开“信任”部分。

“使用此证书时”设置为“始终信任”

于 2015-08-13T16:05:05.190 回答
7

要在 Windows 中创建 Chrome v58 及更高版本将信任的自签名证书,请使用提升的权限启动 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存储下的本地计算机证书中。

您希望将此证书复制到Trusted Root Certification Authorities\Certificates存储。

一种方法是:单击 Windows 开始按钮,然后键入certlm.msc. 然后按照以下屏幕截图 将新创建的证书拖放到Trusted Root Certification Authorities\Certificates存储中。在此处输入图像描述

于 2019-05-21T06:20:52.427 回答
7

截至 2020 年 3 月,在使用 Chrome 81 的 MacOS Catalina 上,一旦您使用上述 openssl 创建有效证书,这种情况就会发生变化。

首先,我使用 Safari 浏览到我的站点,然后单击警告页面底部的链接,该链接允许我访问该站点。这将证书添加到我的 Mac 钥匙串(即 Keychain.app)中。Safari 然后会让我查看页面。Chrome 显示该证书是受信任的,但不允许我查看该页面。我继续收到 CERTIFICATE_INVALID 错误。

在钥匙串中,选择左下方窗格中的所有项目。然后搜索您的 localhost DNS 名称(即 myhost.example.com)。

双击您的证书。它将为您的证书打开一个编辑对话框。

将“使用此证书时”更改为“始终信任”

这完全违反直觉,因为 SSL 已经设置为始终信任,大概是 Safari 在添加证书时设置的。Chrome 仅在我将其全局更改为 Always Trust 后才开始工作。当我把它改回来时,它停止工作了。

于 2020-03-30T19:55:37.547 回答
6

单击 URL 旁边的小划线锁图标时,您将看到一个如下所示的框:

在此处输入图像描述

单击证书信息链接后,您将看到以下对话框:

在此处输入图像描述

它告诉您哪个证书存储是正确的,它是受信任的根证书颁发机构存储。

您可以使用其他答案中概述的方法之一将证书添加到该商店或使用:

certutil -addstore -user "ROOT" cert.pem
  • ROOT是前面提到的证书存储的内部名称。
  • cert.pem是您的自签名证书的名称。
于 2013-09-26T15:15:35.160 回答
6

修复 Windows 上的 Chrome。

首先,您需要导出证书。

  • 在浏览器中找到网址。网址的“https”部分将被红线划掉,左侧会有一个锁定符号。
  • 右键单击划掉的“https”部分。
  • 您将看到一个包含各种信息的信息窗口
  • 点击“详情”。
  • 导出证书,按照指示接受默认设置。

导入

  • 转到 Chrome 设置
  • 点击“高级设置”
  • 在 HTTPS/SSL 下单击“管理证书”
  • 转到“受信任的根证书颁发机构”
  • 点击“导入”
  • 将有一个弹出窗口询问您是否要安装此证书。点击“是”。
于 2016-06-30T16:04:51.200 回答
6

从 Chrome 58+ 开始,由于缺少 SAN ,我开始在macOS上收到证书错误。以下是如何再次获得地址栏上的绿色锁。

  1. 使用以下命令生成新证书:

    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
    
  2. 将其导入server.crt您的 KeyChain,然后双击证书,展开Trust,然后选择Always Trust

刷新谷歌浏览器中的https://domain.dev页面,绿锁又回来了。

于 2017-06-17T17:45:58.873 回答
6

这篇文章已经收到了大量回复,但我根据其他一些答案创建了一个bash 脚本,以便更轻松地生成在 Chrome 中有效的自签名 TLS 证书Chrome 65.x(在 中测试)。希望对其他人有用。

自签名 tls bash 脚本

安装(并信任)证书后,不要忘记重新启动 Chrome ( chrome://restart)


另一个值得一试的工具是 CloudFlare 的cfssl工具包:

cfssl

于 2017-09-15T16:25:55.883 回答
6

我为自己解决了这个问题,而没有更改任何具有适当 SSL 认证的浏览器的设置。我使用的是 Mac,因此需要对我的 ssl 认证进行钥匙串更新。我必须在 ssl 认证中添加主题 alt 名称才能让 chrome 接受它。截至今天,这是 Chrome 版本号:62.0.3202.94

我的示例是易于使用的命令和配置文件:

添加这些文件,这个例子都在一个根目录中

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

对于 Windows,您必须找到如何在本地独立验证我们的 ssl 证书。我不使用 Windows。抱歉,windows 的男生和女生。

我正在使用带有 express.js 的 node.js 服务器,只需要我的密钥和认证,如下所示:

应用程序.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

快乐编码!

于 2017-11-29T14:42:31.923 回答
6

对于 MacOS 上的 Chrome,如果您已准备好证书:

  • 退出 Chrome ( cmd+ Q)。
  • 启动 Keychain Access 应用程序并打开“证书”类别。
  • 将您的证书文件拖到 Keychain Access 窗口并输入证书文件的密码。
  • 双击您的证书并展开“信任”列表。
    • 在“使用此证书时”行中,选择“始终信任”。
    • 关闭这些东西并输入您的密码。
  • 启动 Chrome 并清除所有缓存。
  • 检查一切是否正常。
于 2018-02-01T09:21:15.213 回答
6

我尝试了一切,它的工作原理:导入时,选择正确的类别,即Trusted Root Certificate Authorities

(抱歉是德语,但请按照图片进行操作)

在此处输入图像描述

于 2018-04-06T12:56:51.787 回答
6
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
)
于 2018-06-15T15:59:06.710 回答
6

对于 Fedora、Ubuntu、Linux,如果您在example.com Not a Certification authority使用 gui 添加证书以添加新的 root 权限时遇到错误。如果您想信任服务器自签名证书,它不能提及无效的授权……即使那是它本身。我只能通过信任我的权限并使用该权限密钥签署服务器证书来使其工作。

这是它接受的自签名CA证书。这是我发现可行的唯一方法cert_authority_invalid,我尝试了几个小时让它接受自签名端点证书,没有雪茄。UI 将接受自签名权限,只要它已声明CA:TRUE。之后,所有由该密钥签署的具有正确 DN 的证书都将被 chrome 接受,而无需单独添加它们。

openssl req -new -x509 -extensions v3_req -days 8440 -config ca.conf -key rockstor.key -out rockstor.cert

[req]
distinguished_name=dn
req_extensions=v3_req
prompt = no

[v3_req]
basicConstraints=CA:TRUE,pathlen:0
keyUsage = keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth, clientAuth
subjectAltName=@alt_names

[alt_names]
DNS.1 = ca.tdpowerskills.com

[dn]
C = US
ST = LA
L = Alexandria
O = TDPS Certification Authority
OU = LEARNOPS
CN = ca.tdpowerskills.com

openssl req -new -x509 -extensions v3_req -days 8440 -config config.conf -key rockstor.key -out rockstor.cert

[req]
distinguished_name=dn
req_extensions=v3_req
prompt = no

[v3_req]
basicConstraints=CA:FALSE
keyUsage = keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth, clientAuth
subjectAltName=@alt_names
issuerAltName=DNS:ca.tdpowerskills.com

[alt_names]
DNS.1 = big.tdps.app

[dn]
C = US
ST = LA
L = Alexandria
O = TDPS Certification Authority
OU = LEARNOPS
CN = ca.tdpowerskills.com

如果这不起作用:

  • chrome://restart真正重启

  • 尝试使用 firefox 获取有关错误的更多详细信息,它往往会更好地解释错误......虽然 chrome 会说 ERR_CERTIFICATE_INVALID,但 firefox 会抛出:MOZILLA_PKIX_ERROR_CA_CERT_USED_AS_END_ENTITY。

  • 请记住,chrome 现在需要 Subject Alternate Name 并且几乎忽略了 CN。

为他人:

  • certutil -d sql:$HOME/.pki/nssdb -A -t "P,," -n <nickname> -i <my.crt>// 对于服务器证书

  • certutil -d sql:$HOME/.pki/nssdb -A -t "C,," -n <nickname> -i <my.crt>对于 CA 的https://blogs.oracle.com/meena/about-trust-flags-of-certificates-in-nss-database-that-c​​an-be-modified-by-certutil

  • 对于 Firefox,添加异常证书的 UI 确实有效,并且一旦您这样做,它就会信任它。

  • 也许您有一些时髦的设置,/etc/pki/tls/openssl.cnf这些设置与您的配置合并。

  • 也许您没有向配置或命令行添加扩展名,例如 v3_req

  • 请注意,我的方法绕过了对 CSR 的需求,只需使用授权密钥签署证书并添加开发服务器的详细信息。CSR 允许更多密钥以实现实际安全。

  • 我尝试了一切,但 chrome 需要具有基本约束 CA:true 设置的权限。并且服务器证书都必须由有效的授权机构签发……即使这只是另一个使用 CA:true 自己签名的证书。

于 2019-02-21T20:51:53.960 回答
5

这是不断出现的东西 - 特别是对于 Mac OS X Yosemite 上的 Google Chrome!

值得庆幸的是,我们的一个开发团队今天向我发送了这个链接,该方法工作可靠,同时仍然允许您控制您接受哪些站点的证书。

https://www.reddit.com/r/sysadmin/comments/3ercx4/chrome_shortcut_past_the_your_connection_is_not/cthporl

杰苏利帖子:

如果您不想打扰内部证书...

  1. chrome://flags/在地址栏中输入。
  2. 滚动到或搜索记住决定以在指定的时间长度内继续处理 SSL 错误。
  3. 选择记住三个月。
于 2015-08-07T13:50:58.470 回答
5

mac / osx 上的 SSL / HTTPS localhost 修复:

  1. 尝试打开 https localhost 环境时,单击地址栏中带有十字的红色锁。将打开一个窗口,其中包含有关证书的一些信息。

  2. 单击“详细信息” 信息窗口

  3. chrome 开发人员工具在“安全”选项卡上打开。点击查看证书证书图片
  4. 将其添加到您的“系统”钥匙串(不是默认选择的“登录”钥匙串)。

  5. (再次)打开您的钥匙串并找到证书。单击它并确保您“信任”所有。

  6. 重新启动chrome,它应该可以工作。

于 2016-06-29T12:54:32.377 回答
5

我遇到了同样的问题:我已将证书安装到 Windows 的 Trusted Root Authorities 存储中,但 Chrome 仍然拒绝证书,并出现错误ERR_CERT_COMMON_NAME_INVALID。请注意,当证书未正确安装在商店中时,错误为ERR_CERT_AUTHORITY_INVALID.

正如错误名称、此评论此问题所暗示的那样,问题出在证书中声明的域名中。在生成证书时提示输入“通用名称”时,我必须输入用于访问该站点的域名localhost(在我的情况下)。我重新启动了 Chrome chrome://restart,它终于对这个新证书感到满意。

于 2016-08-30T08:19:25.830 回答
5

当我尝试在浏览器中导入证书时,它对我不起作用...在 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

// 窗口

Start => run => certmgr.msc

在左侧选择受信任的根证书颁发机构 => 个人。单击操作选项卡 => 所有操作/导入,然后选择您之前从浏览器导出的文件

别忘了重启chrome!!!

祝你好运!;)

于 2017-12-14T06:38:02.597 回答
5

这里我的WINDOWS解决方案可能适用于 LINUX

Git 有 openssl

C:\Program Files\Git\usr\bin\openssl.exe。

导航到 C:\Program Files\Git\usr\bin\ 但最好添加到 PATH

为证书
创建一个文件夹 创建一个文件 req.cnf
像我公司一样更改值
不要删除
subjectAltName = @alt_names
[alt_names]
DNS.1 = localhost
那里 Chrome 抱怨

C = CA
CA 是两个字母的国家代码 CA=Canada, US...
ST = ON 是省 ON = Ontario

请求.cnf

[req]
distinguished_name = req_distinguished_name
x509_extensions = v3_req
prompt = no
[req_distinguished_name]
C = CA
ST = ON
L = Toronto
O = MyCompany
OU = MyDivision
CN = localhost
[v3_req]
keyUsage = critical, digitalSignature, keyAgreement
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1 = localhost 
DNS.2 = www.mydomainname.com
DNS.3 = mydomainname.com

在 CMD 中创建证书

 openssl req -x509 -nodes -days 365 -newkey rsa:2048  -keyout server.key -out server.crt -config req.cnf -sha256

 cat server.crt server.key > server.pem

覆盖开发证书

 yourproject\node_modules\webpack-dev-server\ssl   with the **server.pem**

在 chrome 设置 -> 管理证书

将server.crt导入到Trusted Certification Authorizes restart chrome

package.json

 "scripts": {
    "start": "set HTTPS=true&&react-scripts start",
于 2020-04-21T21:51:40.263 回答
4

2021 年 6 月 - Windows 10 - Chrome v91(简单)

按照selfsignedcertificate.com的证书生成说明进行操作:

示例域名:mydomain.local,将其替换为您的域名。

步骤 1) 生成密钥:

openssl genrsa -out mydomain.local.key 2048

步骤 2) 创建mydomain.local.conf仅包含以下内容的配置文件:

[req]
distinguished_name=req
[SAN]
subjectAltName=DNS:mydomain.local

注意:在 subcjectAltName 中,您可以定义更多域(可选),例如:

subjectAltName=DNS:mydomain.local, DNS:*.mydomain.local, DNS:otherdomain.local, IP:192.168.1.10

步骤 3) 创建证书:

openssl req -new -x509 -key mydomain.local.key -out mydomain.local.crt -days 3650 -subj /CN=mydomain.local -extensions SAN -config mydomain.local.conf

步骤 4) 将证书添加到受信任的根证书颁发机构

右键单击 mydomain.local.crt 文件,Install Certificate从上下文菜单中选择。Local Machine在弹出窗口中选择。下一个。选择Place all certificates in the following store。单击Browse。选择Trusted Root Certification Authorities。单击Ok, Next, Finish。重新启动 Chrome。

于 2021-06-06T03:08:34.133 回答
3

我应该怎么做才能让 Chrome 接受证书并停止抱怨它?

您应该使用以下方法创建 PKI;

  1. 自签名根 CA。
  2. 子/中间证书[由根 CA 签名]。
  3. 普通/最终实体证书[由根 CA 或子 CA 签名]
    • commonNamesubjectAltName(SAN)作为“本地主机”。
    • 还包括https://localhost/作为 SAN 中的 URI。
  4. 在您的 Windows 操作系统中将该根 CA 导入/安装为“受信任的根证书颁发机构”。
  5. 将该最终实体证书安装为您的 Web 服务器证书,它就会停止抱怨该错误消息。

希望这可以帮助。

于 2017-01-31T10:24:53.287 回答
3

我在kellen的回答和 Toby J的重要更新之后取得了成功,但必须进行此修订:

创建自签名证书时,必须将新subjectAltName字段放在v3_ca扩展名下,而不是v3_req. 我复制/etc/ssl/openssl.conf到一个临时文件,然后subjectAltName = DNS:*.example.com[ v3_ca ]. 然后将该文件传递给证书创建命令,例如

  openssl req -x509 -nodes -newkey rsa:2048 \
          -config /tmp/openssl-revised.cfg \
          -keyout example.com.key -out example.com.crt

并遵循凯伦的更新步骤。

于 2018-05-05T02:09:05.710 回答
3

我的解决方案和解释:

我有使用 IIS 资源工具包工具SelfSSL.exe创建的自签名证书。在我本地计算机上的证书列表中,我看到这个自签名证书只有一个用途服务器身份验证。因此,我创建了具有两个目的的新自签名证书:Server AuthenticationClient Authentication。现在 Chrome 不再抱怨了。

本文展示了许多生成自签名证书的方法。请注意,并非所有选项都允许您指定证书用途。我使用了 PowerShell 方式:

$cert = New-SelfSignedCertificate -certstorelocation cert:\localmachine\my -dnsname company.co.nz

注意:正如kellen Chrome 的答案所述,确实允许您设置证书的用途,但是如果没有考虑到最后一个证书的创建目的,IMO 它不能为证书添加新的目的。

于 2019-08-14T11:26:28.897 回答
3

我刚刚在我的 chrome 中启用allow-insecure-localhost了标志,就是这样。

脚步。

  1. 输入chrome://flags您的 chrome 标签。
  2. 搜索allow-insecure-localhost标志并启用它。
  3. 重新启动 chrome 浏览器。

现在您将不会看到 https://localhost 站点的不安全警告。

于 2021-06-04T09:22:57.993 回答
2

假设您使用的是 Mac OSX,您也可以在 Safari 中打开相关 URL;说; https://localhost:8080/css/app.css,允许证书。重新启动 Chrome,它会工作。

于 2017-12-06T17:45:11.763 回答
1

我不得不在 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 时,自签名证书可以正常工作。但是不要使用使用此脚本启动的浏览器浏览网页,您不会收到有关无效证书的警告!

于 2013-11-25T19:04:05.337 回答
1

这是一个仅使用 Java 8 keytool.exe 而不是 openssl 的解决方案:

@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 进行了测试。

请在使用脚本前更改默认密码。

于 2017-08-16T14:21:54.797 回答
1

在 Windows 10 上进行本地测试时,以上答案都没有帮助我

https://localhost:<port>.

但是我找到了这个页面,表明要传递另一个标志:

https://www.chromium.org/blink/serviceworker/service-worker-faq

如果您想使用自签名证书在https://localhost上进行测试,请执行以下操作:

$ ./chrome --allow-insecure-localhost https://localhost

这并没有消除红色警告,但它确实使我能够使用仅限 https 的功能,如服务工作者和网络推送通知。

于 2017-11-02T00:28:28.327 回答
0

好的,假设您已经创建了一个“有效”的自签名证书。它可以在 chrome 版本 94 上正确安装。但是当您访问该站点时,您没有获得 ssl 锁并收到“不是有效的证书颁发机构”错误。事实上,它是一个有效的证书。但是,如果您没有正确浏览该站点,则会收到此错误。我的证书的 DNS 是 DNS1:TFDM,DNS2:TFDM.local,DNS3:172.31.42.251,DNS4:192.168.20.50。

我正在浏览 192.168.20.50,它不会安全(锁定)。问题是,证书适用于 DNS1:TFDM。所以我必须进入我的 /etc/hosts 文件 (centos7) 192.168.20.50 TFDM 进行解析 - 然后浏览 https://TFDM。问题解决了。您必须正确浏览该站点。我以为它会在服务器端解决,但它必须在客户端解决。这很容易被忽视,如果其他一切都正确,这可能是您的问题。压倒一切的安全性和 ssl 功能是自找麻烦,我不认为是一个合适的解决方案。如果应用正确并遵循 Chrome 不断变化的规则,自签名证书可以工作。

于 2021-11-16T13:44:04.310 回答
-1

出于在 Windows 上的开发目的,您可以
添加到 Chrome 快捷方式标志--ignore-certificate-errors

它期望忽略证书错误并允许您访问无效的证书网站。https://support.opendns.com/entries/66657664
中有更详细的说明。

在此处输入图像描述

于 2016-08-10T19:15:14.633 回答