Golang服务器部署SSL超级大坑

Golang服务器部署SSL超级大坑,第1张

我第一次部署golang SSL相关的东西

这2天用golang部署wss给小游戏测试

我把拿到完整的pem拆解出cert给ListenAndServeTLS传进去

为什么要拆出来用呢!?


因为ListenAndServeTLS给的传参提示是certFile string 

结果我特么给ListenAndServeTLS第二个参数使用的文件居然是这货的结果!

openssl x509 -in server.pem -out server.crt

结果是啥文件呢?crt是完整版chain的第一部分!!

然后测试了2天!研究了2天!!浪费了2天!!!我要狂暴了。

文件给https可以握手成功!

给微信开发者工具用也握手成功!

到真机体验版就特么各种握手不成功!

就在刚才,无意间看到了一篇文章:

微信小程序开发坑之——SSL证书坑 | 微信开放社区

说什么呢!?

 对证书要求如下:

HTTPS 证书必须有效;证书必须被系统信任,即根证书被已系统内置部署 SSL 证书的网站域名必须与证书颁发的域名一致证书必须在有效期内证书的信任链必需完整(需要服务器配置)iOS 不支持自签名证书;iOS 下证书必须满足苹果 App Transport Security (ATS) 的要求;TLS 必须支持 1.2 及以上版本。部分旧 Android 机型还未支持 TLS 1.2,请确保 HTTPS 服务器的 TLS 版本支持
1.2 及以下版本;部分 CA 可能不被 *** 作系统信任,请开发者在选择证书时注意小程序和各系统的相关通告。 Chrome 56/57 内核对 WoSign、StartCom 证书限制周知

然后我又去看了一遍ListenAndServerTLS的描述:

原文描述后半段是:

If the certificate is signed by a certificate authority, the certFile should be the concatenation of the server's certificate, any intermediates, and the CA's certificate.

翻译过来就是:

如果证书是由证书颁发机构签署的,则certFile应该是服务器的证书、任何中间设备和CA的证书的串联。

什么意思呢!?

myssl.com测试后的结果如果证书链信息是3个,那么certFile就应该是3个包裹体

像这样:

-----BEGIN CERTIFICATE-----

xxxx
-----END CERTIFICATE-----

-----BEGIN CERTIFICATE-----

xxxx
-----END CERTIFICATE-----

-----BEGIN CERTIFICATE-----

xxxx
-----END CERTIFICATE-----

然后我就说想试试完整的fullchain把,然后就成功握手了!fuc*!*!!**!*!***!

err := http.ListenAndServeTLS(strRemote, CA_PATH+"fullchain.pem", CA_PATH+"privkey.pem", nil)

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/990878.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存