![]() |
1
bearice 2024-06-27 13:08:22 +08:00
你都 pin 证书了,那就自签一个呗,想签多久签多久。
|
![]() |
2
Xinu 2024-06-27 13:23:57 +08:00
这肯定推荐自签证书,我都是签 20 年
|
![]() |
3
tool2dx 2024-06-27 13:34:30 +08:00
标准 SSL pin 不太好用,安卓上有工具可以 remove the Certificate Pinning ,会修改一些 okhttp3 函数调用。
最好自己维护一个证书白名单列表。 |
![]() |
5
NewYear 2024-06-27 15:28:59 +08:00
SSL 最长就是 13 个月,,,长了浏览器也不信任。你买多年的它也只会给你发一年的。
|
![]() |
6
retanoj 2024-06-27 15:41:34 +08:00
|
7
yinmin 2024-06-27 16:08:59 +08:00 via iPhone
用证书的 pubkey 做 pin 字段,之后用原来的 csr 申请新证书,pubkey 不会变化的。
你也可以事先多做几个 csr ,然后自签名取到 pubkey ,然后都 ssl pin 到软件里,将来万一密钥 key 文件泄漏,换一个 csr 申请。 |
9
mxT52CRuqR6o5 2024-06-27 16:48:08 +08:00 via Android
做 ssl pin 无论如何都得存点什么才能叫 ssl pin 吧,你用系统根证书列表验证书不叫 ssl pin
|
10
vfx666 OP @Xinu 我是 c++写的客户端,用 winhttp ,自签证书能搞吗?是不是要在程序里忽略证书安全性
|
![]() |
12
Xinu 2024-06-27 17:25:28 +08:00
@vfx666 能的,可以做自签证书,你的服务端用自签证书开启 tls 传输,客户端通信的时候也要携带自签证书相关的内容。双向验证证书
|
![]() |
13
Xinu 2024-06-27 17:26:22 +08:00
|
15
yinmin 2024-06-27 18:19:55 +08:00 via iPhone
@vfx666 #11 openssl 生成 key 和 csr 文件,在服务商申请证书时选择提交 csr 方式
|
17
ho121 2024-06-27 18:27:27 +08:00 via Android
@vfx666 客户端默认拒绝非信任的证书是为了防止有人使用野生证书做中间人攻击。而你都做 ssl pin 了,就不存在野生证书的问题了,直接接受自己的证书就行了
|
18
vfx666 OP @ho121 但是这样的话还是得在客户端代码里设置忽略证书错误,不然 winhttp 默认是拒绝连接的吧
|
19
liuw666 2024-06-27 19:26:41 +08:00 via iPhone
客户端代码里可以设置信任自签证书的
|
20
liuw666 2024-06-27 19:27:28 +08:00 via iPhone
不需要忽略证书错误,只信任你自己的那个就行
|
22
arrow629 2024-06-29 23:57:35 +08:00
@vfx666 你就忽略错误,WinHTTP 不是有办法拿到证书的上下文吗 https://learn.microsoft.com/en-us/windows/win32/winhttp/ssl-in-winhttp#:~:text=When%20using%20the,WINHTTP_OPTION_SERVER_CERT_CONTEXT%20flag%20instead. 拿到 CERT_CONTEXT structure 后,你用 openssl 解析判断是不是你的证书就行
|
23
arrow629 2024-06-30 00:01:11 +08:00
@liuw666 WinHTTP 好像必须要忽略证书错误才能用自签证书,不过 WinHTTP 可以拿到建立 TLS 连接时服务器的证书,可以在代码里判断就是了
|
![]() |
24
aideep 150 天前
哈哈,自签名你签 20 年也 OK 啊,或者 ACME ,直接签 Let's Encrypt
有需求低价的,DV 我扔一批单域名 50 元/年的优惠码: 02290CB4DAD27E60 60972BEBAB946A0E 60118934521B5F7C 960AA8C180819C5E E486531A95932B5E 可以从 www.itrustssl.cn 兑换。 |