我正在尝试在我的本地PC上设置开发环境 . 由于 生产环境 网站支持HTTPS(现在不支持?),我想在localhost上也支持这个 . 我觉得这很容易,但没有 .
我有一个XAMP安装,并设置所有,所以我可以访问该网站 . 但是,每当我在本地访问网站上的任何页面时,我都会收到Chrome警告:
NET :: ERR_CERT_AUTHORITY_INVALID
我确实按照以下线程尝试解决它:
Getting Chrome to accept self-signed localhost certificate
我还使用正确的主题备用名称(SAN)部分创建了证书,基于此:
https://deliciousbrains.com/https-locally-without-browser-privacy-errors/
之后,我生成了CER或P7B文件并将其导入Chrome . 我重新启动了Apache和Chrome .
我将证书放在受信任的根证书颁发机构中 . 不知何故,Chrome决定将其置于中级根证书颁发机构......
我使用的是Chrome 61,我在60年代也是如此 .
所以不知怎的,我无法安装自签名证书,并继续得到这个警告,这基本上使得localhost上的开发变得不可能......
我知道这种自签名并不完全值得信赖,但必须有一种离线开发的方法吗?从现在开始我们必须在线 Build 网站是没有意义的吗?...
有任何想法吗?
3 回答
以下是使用KeyStore Explorer工具的说明 .
我创建证书时我之前缺少的两件事是:
AKID(授权密钥标识符) - 选择创建时使用的"CN=" .
添加"Basic Constraints"选项(不要选择"is a CA")
如果没有这两件事,即使您已将自签名证书安装到MS-CAPI PKI信任库(作为“受信任的根权限”),Chrome也会发出警告/错误 .
以下是我使用的步骤 .
使用KSE的指令(KeyStore Explorer)
创建一个JKS
创建自签名证书
打开KeyStore Explorer
文件|新的| JKS |好
为您的JKS文件创建密码
文件|另存为... |输入你的密码
输入文件名|好
工具|生成密钥对
选择算法和密钥大小(即2048)|好
选择有效期(即5年)
选择名称(书本图标)|在名称字段中输入|好
I.e. “CN =本地主机......”
添加扩展(非常重要),这决定了它将是什么类型的证书以及如何使用它 . 此示例将用于具有SSL的标准服务器证书 .
添加密钥用法项
添加数字签名和密钥加密选项复选框
添加EKU(扩展密钥用法)选项
选择以下两个选项:
TLS Web客户端身份验证
TLS Web服务器身份验证
添加SAN(主题备用名称)
添加将使用此服务器的所有必需DNS名称和IP地址(如果适用) . (重复所有所需的值)(例如127.0.0.1和localhost(或)
完成后会看起来像这样
完成后,您将看到列出了OID(对象标识符)的所有字段好的好
添加AKID(授权密钥标识符)
添加扩展"+"
添加扩展类型|授权密钥标识符
选择您在上面创建的CN的授权证书颁发者(.e.g "CN=localhost...")|好
添加"Basic Constraints"(不要检查"Subject is a CA")
当你're done you' ll看到列出的这些:点击"OK"
注意:Chrome浏览器需要基本约束和AKID(授权密钥标识符)才能将自签名证书验证为可信证书 .
否则,即使您明确地将此证书添加到MS-CAPI受信任的根证书,您也会看到警告或错误消息 .
输入要使用的密钥对名称的别名
输入私钥对的密码
*注意:此密码必须与JKS文件密钥库密码相同,否则Java在尝试使用此证书时可能会无提示失败 .
您应该看到一条表示成功的消息 . |好
然后,保存文件|保存
我在this后修复了完全相同的问题 .
问题似乎与证书的创建方式有关 .
以下代码来自上述网站 .
server.csr.cnf文件
v3.ext文件
有一个很好的基于GUI的java实用程序,我用它来创建和操作PKI称为KeyStore Explorer的所有东西 . 比所有命令行选项容易得多:
http://keystore-explorer.org/