我自己制作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页面?

阅读 6.2k
6 个回答

自签证书不被信任,你需要使用受信任的证书。

免费证书有:

  • StartSSL

  • Let's Encrypt

  • WoSign(国内证书)

低价证书:

  • Comodo PositiveSSL

其中StartSSLComodo PositiveSSL是1年有效期;Let's Encrypt是90天有效期,但支持自动renew。
不过不管申请哪一家的证书你都需要有一个自己的域名。


免费证书中StartSSL时效较长,但是申请较为复杂。
Let's Encrypt 申请比较简单,可以通过acme_tiny这个小工具来进行申请,这里是使用教程
沃通(WoSign)证书也是一年有效期(现已支持两年有效期),申请过程全中文,也值得推荐。点此申请

自己生成的证书浏览器是没办法验证通过的。

新手上路,请多包涵

用Let's Encrypt之类的吧,自己签发的不行

你的证书是不受信任的证书,因此不能被现有浏览器所认可,如果你想要实现自己的https服务,那么就需要购买受信任的证书签发机构所颁发的证书,或者将你的域名挂靠到受信任的证书颁发机构所颁发的证书上。
虽然有点绕口,但就是这么回事。原理就是这么的枯燥。。

新手上路,请多包涵

自己生成的证书,属于自签名证书,需要手机端先安装你生成的cert.pem,然后就可以像正常https网站一样访问。

前段时间也写过类似的项目:node-mitmproxy

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题