相关疑难解决方法(0)

在 Python 中使用 ssl context.set_servername_callback

我的目标是允许 ssl 客户端从服务器的许多有效证书对中进行选择。客户端有一个 CA 证书,它将用来验证来自服务器的证书。

因此,为了尝试实现这一点,我ssl.SSLContext.set_servername_callback()将服务器上的 与ssl.SSLSocket.wrap_socket's parameter:server_hostname`结合使用,以尝试允许客户端指定要使用的密钥对。代码如下所示:

服务器代码:

import sys
import pickle
import ssl
import socket
import select

request = {'msgtype': 0, 'value': 'Ping', 'test': [chr(i) for i in range(256)]}
response = {'msgtype': 1, 'value': 'Pong'}

def handle_client(c, a):
    print("Connection from {}:{}".format(*a))
    req_raw = c.recv(10000)
    req = pickle.loads(req_raw)
    print("Received message: {}".format(req))
    res = pickle.dumps(response)
    print("Sending message: {}".format(response))
    c.send(res)

def run_server(hostname, port):
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    s.bind((hostname, port))
    s.listen(8)
    print("Serving on {}:{}".format(hostname, port)) …
Run Code Online (Sandbox Code Playgroud)

python ssl pyopenssl

5
推荐指数
1
解决办法
3374
查看次数

使用SNI在一个盒子中提供多个域

我在FreeBSD-8.2中使用OpenSSL 0.9.8q.我的系统上有3个虚拟主机,并希望在一台服务器上实现SNI以服务所有3个虚拟主机.

我每个都有3个单独的证书,在我的ssl-server代码中,我必须以某种方式找出客户端请求的域名是什么,并使用相应的证书文件.为此,我编写了一个名为的函数,get_ssl_servername_cb并将其作为回调函数传递给SSL_CTX_set_tlsext_servername_callback.这样,在回调函数中,我可以得到客户端请求的域名.

但我的问题是,这个回调函数正在执行函数后执行SSL_accept,但我必须在使用SSL_new命令之前选择并使用相应的证书,这是执行之前的方式SSL_accept.

所以我的问题是,我如何使用SSL_CTX_set_tlsext_servername_callbackSNI函数?

c openssl sni

4
推荐指数
1
解决办法
3260
查看次数

PHP服务器端SNI支持

我阅读了很多php联机帮助页,但只在上下文中找到了有关SNI支持的信息 - http://www.php.net/manual/en/context.ssl.php

当PHP作为服务器工作时,是否可以通过浏览器获取SNI?使用标准stream_socket_server()创建服务器,如例如.这篇文章:http://www.php.net/manual/en/function.stream-socket-server.php#98616

php ssl https php-openssl

3
推荐指数
1
解决办法
1723
查看次数

OpenSSL是否允许每个进程多个SSL_CTX,一个SSL_CTX用于服务器会话,另一个SSL_CTX用于客户端会话?

我有一个Linux进程需要充当SSL服务器(接受和服务来自其他客户端的连接),但也需要 - 在同一个进程中 - 启动与其他SSL服务器的客户端会话.

我打算使用两个SSL_CTX_new()函数调用创建两个单独的SSL_CTX句柄,一个调用服务器方法,另一个调用客户端方法.是否支持在单个进程中双重使用OpenSSL?我希望OpenSSL使用SSL_CTX句柄 - 并且不依赖于全局或静态局部变量 - 来创建和服务新会话可能需要的所有上下文信息.这是一个很好的假设吗?

client openssl simultaneous server

3
推荐指数
2
解决办法
4625
查看次数

标签 统计

openssl ×2

ssl ×2

c ×1

client ×1

https ×1

php ×1

php-openssl ×1

pyopenssl ×1

python ×1

server ×1

simultaneous ×1

sni ×1