我自己制作SSL证书,自己使用node的https模块搭建了服务器,但是微信端访问没有反应怎么办?
我已经自己制作了'key.pem'和'cert.pem'。然后直接使用阮一峰先生的代码:
var https = require('https');
var fs = require('fs');
var options = {
key: fs.readFileSync('key.pem'),
cert: fs.readFileSync('cert.pem')
};
var a = https.createServer(options, function (req, res) {
res.writeHead(200);
res.end("hello world\n");
}).listen(8000);
结果是,所有的浏览器都不能正常访问。有些浏览器经过询问之后,可以继续访问页面。但是微信端却没有反应。
请问,我如何使各种浏览器正常的访问我的https页面?
特别是微信端可以正常访问我的https页面?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
自签证书不被信任,你需要使用受信任的证书。
免费证书有:
StartSSL
Let's Encrypt
WoSign(国内证书)
低价证书:
Comodo PositiveSSL
其中
StartSSL
和Comodo PositiveSSL
是1年有效期;Let's Encrypt
是90天有效期,但支持自动renew。不过不管申请哪一家的证书你都需要有一个自己的域名。
免费证书中StartSSL时效较长,但是申请较为复杂。
Let's Encrypt 申请比较简单,可以通过acme_tiny这个小工具来进行申请,这里是使用教程。
沃通(WoSign)证书也是
一年有效期(现已支持两年有效期),申请过程全中文,也值得推荐。点此申请自己生成的证书浏览器是没办法验证通过的。
用Let's Encrypt之类的吧,自己签发的不行
你的证书是不受信任的证书,因此不能被现有浏览器所认可,如果你想要实现自己的https服务,那么就需要购买受信任的证书签发机构所颁发的证书,或者将你的域名挂靠到受信任的证书颁发机构所颁发的证书上。
虽然有点绕口,但就是这么回事。原理就是这么的枯燥。。
自己生成的证书,属于自签名证书,需要手机端先安装你生成的cert.pem,然后就可以像正常https网站一样访问。
前段时间也写过类似的项目:node-mitmproxy
之前也用的
StartSSL
的免费证书,直到Chrome
升级到57.0.2931.0
之后,提示证书报错了。后来发现
QQ
也可以申请一年的免费证书,提供商是Verisign
的,感觉还是靠谱一点。附上申请链接:https://console.qcloud.com/ssl