M2Crypto 是否支持客户端服务器名称指示 (SNI)?

发布于 2024-12-12 17:14:49 字数 462 浏览 2 评论 0原文

我有一个使用 M2Crypto 编写的 python SSL 客户端,我想添加 SNI 支持。

看起来使用 OpenSSL 时会使用 ```SSL_set_tlsext_host_name(ssl, servername)''' 但我不这样做请参阅 M2Crypto API 中公开的函数。

我只是错过了它还是还有其他方法可以做到这一点?

I have a python SSL client written using M2Crypto to which I'd like to add SNI support.

Looks like with OpenSSL one would use ```SSL_set_tlsext_host_name(ssl, servername)''' but I don't see that function exposed in the M2Crypto API.

Am I just missing it or is there some other way to do this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

ˇ宁静的妩媚 2024-12-19 17:14:50

我查看了 M2Crypto SVN 存储库中的最新代码,并且尚不支持 SNI。我也需要 SNI,所以本着真正的开源精神,我为它编写了一个补丁:-)

添加它的补丁实际上非常简单:

Index: SWIG/_ssl.i
===================================================================
--- SWIG/_ssl.i (revision 739)
+++ SWIG/_ssl.i (working copy)
@@ -14,6 +14,7 @@
 #include <openssl/bio.h>
 #include <openssl/dh.h>
 #include <openssl/ssl.h>
+#include <openssl/tls1.h>
 #include <openssl/x509.h>
 %}

@@ -375,6 +376,10 @@
     return SSL_get_mode(ssl);
 }

+long ssl_set_tlsext_host_name(SSL *ssl, const char *name) {
+    return SSL_set_tlsext_host_name(ssl, name);
+}
+
 void ssl_set_client_CA_list_from_file(SSL *ssl, const char *ca_file) {
     SSL_set_client_CA_list(ssl, SSL_load_client_CA_file(ca_file));
 }
Index: M2Crypto/SSL/Connection.py
===================================================================
--- M2Crypto/SSL/Connection.py  (revision 739)
+++ M2Crypto/SSL/Connection.py  (working copy)
@@ -359,3 +359,7 @@

     def set_post_connection_check_callback(self, postConnectionCheck):
         self.postConnectionCheck = postConnectionCheck
+
+    def set_tlsext_host_name(self, name):
+        "Set the requested hostname for the SNI (Server Name Indication) extension"
+        m2.ssl_set_tlsext_host_name(self.ssl, name)

这当然也已提交给 M2Crypto 错误/增强跟踪器。

I looked at the latest code in the M2Crypto SVN repository, and there is no support (yet) fro SNI. I needed SNI too so in the true open source spirit I wrote a patch for it :-)

The patch to add it is actually very simple:

Index: SWIG/_ssl.i
===================================================================
--- SWIG/_ssl.i (revision 739)
+++ SWIG/_ssl.i (working copy)
@@ -14,6 +14,7 @@
 #include <openssl/bio.h>
 #include <openssl/dh.h>
 #include <openssl/ssl.h>
+#include <openssl/tls1.h>
 #include <openssl/x509.h>
 %}

@@ -375,6 +376,10 @@
     return SSL_get_mode(ssl);
 }

+long ssl_set_tlsext_host_name(SSL *ssl, const char *name) {
+    return SSL_set_tlsext_host_name(ssl, name);
+}
+
 void ssl_set_client_CA_list_from_file(SSL *ssl, const char *ca_file) {
     SSL_set_client_CA_list(ssl, SSL_load_client_CA_file(ca_file));
 }
Index: M2Crypto/SSL/Connection.py
===================================================================
--- M2Crypto/SSL/Connection.py  (revision 739)
+++ M2Crypto/SSL/Connection.py  (working copy)
@@ -359,3 +359,7 @@

     def set_post_connection_check_callback(self, postConnectionCheck):
         self.postConnectionCheck = postConnectionCheck
+
+    def set_tlsext_host_name(self, name):
+        "Set the requested hostname for the SNI (Server Name Indication) extension"
+        m2.ssl_set_tlsext_host_name(self.ssl, name)

This has of course also been submitted to the M2Crypto bug/enhancement tracker.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文