如何在我的开发网站中删除 Google Chrome 中的“您的连接不是私密的”

如何在我的开发网站中删除 Google Chrome 中的“您的连接不是私密的”

我是一名 Web 开发人员,我使用 Ubuntu 18.04。我的设置是 nginx、php-fpm、mysql。我的机器上运行着多个站点,例如 site1.local、site2.local。

我按照以下说明配置我的本地站点以使用 SSL:https://www.digitalocean.com/community/tutorials/how-to-create-a-self-signed-ssl-certificate-for-nginx-in-ubuntu-18-04

我成功地配置了它。但我的问题是当我去https://site1.local在谷歌浏览器中,我看到一条警告消息“您的连接不是私密的”:

在此处输入图片描述

我必须手动单击“高级”和“继续前往 site1.local(不安全)”。

我的目标是删除此警告消息并立即查看没有此警告的网站。

我已经通过此处启用了我的 chrome,以允许从本地主机加载的资源使用无效证书 chrome://flags/#allow-insecure-localhost

我现在应该怎么做?

答案1

现在大部分浏览器都会在用户访问没有使用 HTTPS 的网站时给出警告,如果这些网站使用了自签名 SSL 证书,则会提示“您的连接不是私密的”,错误代码为“NET::ERR_CERT_AUTHORITY_INVALID”。

购买并安装付费 SSL 证书

为了避免您的网站出现此问题并改善用户体验,您应该安装知名的 SSL 证书,例如您可以从 Name.com、NameCheap.com 或 Godaddy.com 购买的证书。费用从每年 9 美元起,具体取决于您购买的 SSL 证书类型。但我认为在覆盖一个域名时,这是来自 NameCheap.com 的是很棒的。

以下是分步指南来自 NameCheap.com 的介绍,告诉用户如何在 NGINX 上安装 SSL 证书。快来看看吧!

从 Let's Encrypt 获取免费 SSL 证书

如果你不想花钱购买这些付费 SSL 证书,你可以尝试 Let's Encrypt 提供的免费证书。这是一个免费向用户颁发受信任 SSL 证书的组织。

大多数主流网络浏览器都信任此免费 SSL 证书,因此您不会再遇到上述错误。以下是我找到的两篇文章,介绍如何在 NGINX 和 Ubuntu 上使用 Certbot 免费安装 Let's Encrypt SSL 证书。

https://devanswers.co/lets-encrypt-ssl-cert-nginx-ubuntu-18-04/

https://certbot.eff.org/lets-encrypt/ubuntubionic-nginx.html

我是一名 Web 开发人员,我使用 Ubuntu 18.04。我的设置是 nginx、php-fpm、mysql。我的机器上运行着多个网站,例如 site1.local、site2.local

您需要知道的是,这种类型的 SSL 证书只能验证一个域名。如果您想使用多个域名,则需要使用不同的配置多次安装。例如,如果您的网站同时使用两个域名:domain1.comdomain2.com,则需要安装两个 SSL 证书。

如果您仅为 安装 SSL 证书domain1.com,那么当您通过 加载您的网站时domain2.com,您将收到此“非私密”错误。

诊断在网站上设置 SSL 证书时出现的问题或查找网络浏览器上的“您的连接不是私密连接”错误,请查看以下文章。

答案2

Chrome 不喜欢自签名证书。

您必须将证书作为根证书导入 Chrome。

答案3

使用包含在您的浏览器/系统信任存储中的 CA 签名的证书。


编辑:根据要求,我添加了一种创建 ca 签名证书的方法,其中包括现在必要的默认扩展和一些相当默认的 openssl 1.1.1 设置,而无需编辑 openssl.cnf 和/或设置“适当的”ca。

创建 ca 密钥和证书:

openssl genrsa -out ca.key 2048
openssl req -x509 -new -extensions v3_ca -key ca.key -days 3652 -out ca.crt -sha256 -subj "/C=CC/ST=Some State/L=Some City/O=Some Organisation/OU=Some Org Unit/CN=Some Chosen CA Name/[email protected]"

-aes256注意 1:您可能希望使用命令选项加密/密码保护 ca.key genrsa,否则被盗的 ca.key 可用于签署证书 您的浏览器信任您的 ca 盲目信任
注意 2:您不需要在主题中包含那么多信息,例如-subj "/CN=Some Chosen CA Name"就足够了

将 ca 证书(ca.crt)添加到您的浏览器或系统信任库。

创建由您的 CA 签名的证书:

openssl genrsa -out some-example.key 2048
openssl req -new -key some-example.key -sha256 -subj "/C=CC/ST=Some State/L=Some City/O=Some Organisation/OU=Some Org Unit/CN=*.local/[email protected]" | openssl x509 -req -CA ca.crt -CAkey ca.key -CAcreateserial -out some-example.crt -days 730 -sha256 -extfile <(echo -e 'basicConstraints=critical,CA:FALSE\nnsCertType=server\nnsComment="OpenSSL Generated Certificate for App Tests"\nsubjectKeyIdentifier=hash\nauthorityKeyIdentifier=keyid,issuer\nkeyUsage=critical,digitalSignature,keyEncipherment\nextendedKeyUsage=serverAuth\nsubjectAltName=DNS:*.local,DNS:local,DNS:*.testdomain,DNS:testdomain')

注意 1:您可能不想/不需要包含“Netscape”扩展(ns生成的 extfile 中以 开头的行),OpenSSL 默认包含 nsComment 并在配置中提示设置 nsCertType,但现在许多证书中都没有设置。
注意 2:现代客户端应仅使用 subjectAltName 进行主题名称验证,这意味着证书主题中的 CN 变为信息性的,证书有效的所有名称(或 IP、OID 等)都应进入 subjectAltName。即使您希望验证仅对单个名称或地址有效,也应使用 subjectAltName。
注意 3:您不需要在主题中包含那么多信息,因此例如-subj "/CN=Some App Test Certifciate"如果客户端正确使用 SAN 扩展来验证主题就足够了。

local此示例证书对主机名和testdomain所有直接子名称(即 app1.local、app2.local、app3.testdomain)有效。
当然,您可以创建证书或仅为您想要的单个主机名创建证书,只要您使用相同的 ca.crt 和 ca.key,它们都可以在信任 ca.crt 的浏览器中工作。

相关内容