首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QPID C++代理和QPID SSL证书

QPID C++代理和QPID SSL证书
EN

Stack Overflow用户
提问于 2018-06-18 15:06:59
回答 1查看 757关注 0票数 0

我正在尝试用QPID设置SSL,并且我在弄清楚如何设置证书时遇到了困难。我创建了一个证书数据库,并向其添加了一个自签名证书,如下所示:

代码语言:javascript
复制
mkdir ${CERT_DIR}
certutil -N -d ${CERT_DIR} -f ${CERT_PW_FILE}
certutil -S -d ${CERT_DIR} -n ${NICKNAME} -s "CN=${NICKNAME}" -t "CT,," -x -f ${CERT_PW_FILE} -z /usr/bin/certutil

然后启动QPID C++代理,将${CERT_DIR}${NICKNAME}${CERT_PW_FILE}传递给它。代理日志告诉我,SSL侦听器正在我选择的端口上运行。

但是,我不确定在启动QPID C++客户端时,我应该给出什么样的目录/证书名称作为环境变量?我尝试将目录作为${CERT_DIR}传递,证书名作为${NICKNAME}传递,但这似乎不起作用;QPID日志打印消息:

代码语言:javascript
复制
**[System] error Error reading socket: SSL peer cannot verify your certificate [-12271].**

设置与QPID一起使用的服务器和客户端证书的正确过程是什么?它说它必须使用certutil来完成。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-27 11:27:38

使用QPID Proton 0.23.0作为API,QPID CPP1.38.0用于C++ Broker.

文本包含在斜体中,用于那些希望进行客户端身份验证的人.

我想出了如何用自己签署的证书来做这件事:

  1. 生成证书数据库:certutil -N -d [db-directory]
  2. 生成CA证书:certutil -S -s "CN=[ca-name]" -n [ca-name] -x -t "CTu,CTu,CTu" -1 -2 -5 -k rsa -d [db-directory]
  3. 生成服务器证书:certutil -S -s "CN=[server-cert-name]" -n [server-cert-name] -c "[ca-name]" -t "u,u,u" -m [unique-serial-no] -d [db-directory]
  4. 同样,生成客户端证书:certutil -S -s "CN=[client-cert-name]" -n [client-cert-name] -c "[ca-name]" -t "u,u,u" -m [unique-serial-no] -d [db-directory]__。

这将生成包含所需证书的证书数据库。将用于创建证书数据库的密码存储在文件[password-file]中。然后,QPID C++代理可以按如下方式启动:

代码语言:javascript
复制
[path-to-qpidd] --ssl-cert-password-file [password-file] --ssl-cert-db [db-directory] --ssl-cert-name [server-cert-name]

如果还需要客户端身份验证,则传递标志--ssl-require-client-authentication__。

为了使用QPID C++客户端通过SSL进行连接,我们必须将服务器证书导出为.pem文件,将客户端证书导出为cert.pem和key.pem文件。

  1. 将我们的服务器和客户端证书导出为.p12文件:pk12util -o [client/server].p12 -d [db-directory] -n [client-cert-name/server-cert-name]
  2. 将服务器证书导出为.pem文件:openssl pkcs12 -in server.p12 -out server.pem -nodes
  3. 将客户端证书导出为证书和密钥.pem文件:
    • 证书:openssl pkcs12 -in client.p12 -clcerts -nokeys -out clientcert.pem__.
    • 密钥:openssl pkcs12 -in client.p12 -nocerts -out clientkey.pem__。

然后,可以将这些文件传递给QPID,后者将能够实例化与C++代理的连接。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50912506

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档