为了让Edge信任localhost开发服务器,我按照本教程创建了一个自签名证书。我刚刚用localhost替换了client-1.local的所有实例。
简而言之,我通过创建一个带有命令的.pem文件创建了一个可信的权威机构
openssl genrsa -des3 -out rootSSL.key 2048
然后
openssl req -x509 -new -nodes -key rootSSL.key -sha256 -days 1024 -out rootSSL.pem
并将其导入MMC中的可信机构存储中。
然后我用创建了一个私钥
openssl req -new -sha256 -nodes -out localhost.csr -newkey rsa:2048 -keyout localhost.key -subj "/C=AU/ST=NSW/L=Sydney/O=Client One/OU=Dev/CN=localhost/emailAddress=local@local.com"
以及证书
openssl x509 -req -in localhost.csr -CA rootSSL.pem -CAkey rootSSL.key -CAcreateserial -out localhost.crt -days 50000 -sha256 -extensions "authorityKeyIdentifier=keyid,issuern basicConstraints=CA:FALSEn keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEnciphermentn subjectAltName=DNA:localhost"
双击证书显示为有效。
对于例外情况,我需要将证书导入浏览器。对于Firefox,我一开始得到错误
You do not own the private key for the certificate
所以我创建了一个PKCS12文件
openssl pkcs12 -export -inkey ./sample.key -in ./sample.crt -out ./sample.p12
并在Firefox中以";我的证书";。这是有效的,我用ng发球主持";ssl/localhost.crt">和带有导入的.p12的Firefox接受我的localhost。现在,对于MS Edge,它仍然抱怨,我的证书无效。
我也尝试过.pfx-合并,但没有改变。我还阅读了证书不应安装在"我的证书"下,而应作为权威机构安装。这听起来不对,但我尝试了一下,并将.crt和.p12导入权威以及根权威中,因为为什么不导入,但没有更改。我还通过Windows向导安装了证书。
MS Edge缺少什么?遗憾的是,我没有办法绕过它。
=====更新=====
附加信息:
Edge没有给出任何有用的错误。这是消息的图片。它是德语的,但它所说的只是默认文本";连接不安全。证书无效。您的信用卡信息可能被盗"如果有什么方法可以为Edge获得更多信息,我会非常高兴。在开发者控制台中,消息是:
此网站没有有效的SSL证书!如果没有SSL,您的网站和访问者的数据很容易被窃取和篡改。在向公众发布您的网站之前,请获取有效的SSL证书。
可以在此处查看证书文件和openssl x509 -text localhost.crt
的输出(如果需要,密码是pass或password(,并在此处查看.crt的图像。它位于我的开发文件夹中,我用主持网站
ng serve --ssl true --ssl-cert "ssl/localhost.crt" --ssl-key "ssl/localhost.key"
并通过localhost:3000本地访问服务器。
我通过管理证书将.p12文件导入到edge中->我的证书->进口结果是这样的。
MS Edge缺少什么?I
证书不包含任何使用者替代名称,这使其对Edge和Chrome无效。有人试图指定这些信息,但尝试是错误的。
我按照本教程创建了一个自签名证书。
看起来本教程已损坏。
openssl x509-req-"扩展";authorityKeyIdentifier。。。subjectAltName=DNA:localhost";
-extension
命令行选项用于提供配置文件中部分的扩展名,而不是扩展名本身。此外,subjectAltName
应该是DNS:...
而不是DNA:...
。
要修复此问题,请创建一个包含要使用的扩展名的扩展名文件my.ext
:
[myext]
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName=DNS:localhost
然后将此文件用作-extfile my.ext
的扩展名文件,并指定要与-extensions myext
:一起使用的扩展名
openssl x509-req-extfile my.ext-扩展名myext