我试图在nginx中启用客户端证书身份验证,其中证书已由中间CA签名.使用由自签名根CA签名的证书时,我能够正常工作; 但是,当签名CA是中间CA时,这不起作用.
我的简单服务器部分如下所示:
server {
listen 443;
server_name _;
ssl on;
ssl_certificate cert.pem;
ssl_certificate_key cert.key;
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;
ssl_client_certificate ca.pem;
ssl_verify_client on;
ssl_verify_depth 1;
location / {
root html;
index index.html index.htm;
}
}
Run Code Online (Sandbox Code Playgroud)
对于ca.pem的内容,我尝试过只使用中间CA并连接中间CA证书和根CA证书,例如:
cp intermediate.crt ca.pem
cat root.crt >> ca.pem
Run Code Online (Sandbox Code Playgroud)
我还验证了在使用相同的CA链时,从openssl的角度来看证书是有效的:
openssl verify -CAfile /etc/nginx/ca.pem certs/client.crt
certs/client.crt: OK
Run Code Online (Sandbox Code Playgroud)
我已经尝试将ssl_verify_depth显式设置为1(如上所述)然后甚至为0(不确定该数字的确切含义),但仍然会得到相同的错误.
我在中间CA的所有变体中得到的错误是"400 Bad Request",更具体地说是"SSL证书错误"(不确定这意味着什么).
也许nginx只是不支持中间证书的证书链?任何帮助非常感谢!
所以,我有一个使用Twisted + Stomper作为STOMP客户端的应用程序,它将工作分配给多处理工具.工人工具.
当我只使用python脚本启动时,这似乎工作正常,(简化)看起来像这样:
# stompclient.py
logging.config.fileConfig(config_path)
logger = logging.getLogger(__name__)
# Add observer to make Twisted log via python
twisted.python.log.PythonLoggingObserver().start()
# initialize the process pool. (child processes get forked off immediately)
pool = multiprocessing.Pool(processes=processes)
StompClientFactory.username = username
StompClientFactory.password = password
StompClientFactory.destination = destination
reactor.connectTCP(host, port, StompClientFactory())
reactor.run()
Run Code Online (Sandbox Code Playgroud)
当这个打包进行部署时,我想我会利用扭曲的脚本并从tac文件中运行它.
这是我非常相似的tac文件:
# stompclient.tac
logging.config.fileConfig(config_path)
logger = logging.getLogger(__name__)
# Add observer to make Twisted log via python
twisted.python.log.PythonLoggingObserver().start()
# initialize the process pool. (child processes get forked off immediately)
pool = multiprocessing.Pool(processes=processes)
StompClientFactory.username …Run Code Online (Sandbox Code Playgroud)