Opensips Tls 和证书问题

Opensips Tls and certificates issues

我正在尝试在 opensips 中与 blink sip 客户端一起设置证书验证。我遵循了教程:

https://github.com/antonraharja/book-opensips-101/blob/master/content/3.2.%20SIP%20TLS%20Secure%20Calling.mediawiki

我的配置是这样的:

[opensips.cfg]
disable_tls = no
listen = tls:my_ip:5061
tls_verify_server= 0
tls_verify_client = 1
tls_require_client_certificate = 1
#tls_method = TLSv1
tls_method = SSLv23
tls_certificate = "/usr/local/etc/opensips/tls/server/server-cert.pem"
tls_private_key = "/usr/local/etc/opensips/tls/server/server-privkey.pem"
tls_ca_list = "/usr/local/etc/opensips/tls/server/server-calist.pem"

所以我生成了 rootCA 和服务器证书。然后我把 server-calist.pem 添加到那里的 server-privkey.pem (否则 blink sip 客户端不会加载它)并在客户端中设置它。我还在眨眼间将 server-calist.pem 设置为证书颁发机构。但是当我尝试登录到我的服务器时,我得到:

Feb  4 21:02:42 user /usr/local/sbin/opensips[28065]: DBG:core:tcp_read_req: Using the global ( per process ) buff
Feb  4 21:02:42 user /usr/local/sbin/opensips[28065]: DBG:core:tls_update_fd: New fd is 17
Feb  4 21:02:42 user /usr/local/sbin/opensips[28065]: ERROR:core:tls_accept: New TLS connection from 130.85.9.114:48253 failed to accept: rejected by client

所以我假设客户端出于某种原因不接受服务器证书,尽管我在我的 blink sip 客户端中关闭了 "Verify server" 复选框!我想我有错误的证书颁发机构文件。

./user/user-cert.pem
./user/user-cert_req.pem
./user/user-privkey.pem
./user/user-calist.pem     <- this 4 are for using opensips as a client i think
./rootCA/certs/01.pem
./rootCA/private/cakey.pem
./rootCA/cacert.pem
./server/server-privkey.pem
./server/server-calist.pem
./server/server-cert.pem
./server/server-cert_req.pem
./calist.pem

任何人都可以帮忙,我是在配置上做错了什么还是我使用了错误的证书链?客户端究竟应该使用什么证书作为客户端证书,以及CA授权证书?

好吧,我仍然不确定它是否有效,因为授权行为变得奇怪,但在它挂起 5-6 分钟后我获得了成功授权,所以这是一个解决方案:

生成根CA:

opensipsctl tls rootCA

然后编辑 tls opensips 文件夹中的 server.conf 文件并设置 commonName = xxx.xxx.xxx.xxx 其中 xxx.xxx.xxx.xxx 是您的服务器 ip 地址。可以以任何方式编辑其他变量。生成由 CA

签名的证书
opensipsctl tls userCERT server

这将产生 4 个文件。下载服务器-calist.pem、服务器-cert.pem、服务器-privkey.pem。打开 server-privkey.pem,复制它的内容并粘贴到文件 server-cert.pem 中,在实际证书之前。如果您使用的是闪烁,则生成的服务器-cert.pem 进入首选项-> 帐户-> 高级。 server-calist.pem 进入首选项->高级。重启 blink 后,5-6 分钟后您的帐户将被登录。但是我观察到一个奇怪的行为,如果您 运行 另一个 blink 副本并尝试登录另一个现有帐户 您从第一个使用证书登录后,您可以从其他帐户登录而无需提供证书。所以我不知道,但我认为它有效。

P.S。我在 opensips 邮件列表中询问了证书,但我猜他们觉得我的问题太蹩脚了,所以我没有得到回复。如果您遇到同样的问题并获得了更好的结果或来自 opensips 支持的答案,请告诉我。