gpt4 book ai didi

c++ - QPID C++ 代理和 QPID-CPP SSL 证书

转载 作者:太空宇宙 更新时间:2023-11-03 14:32:59 27 4
gpt4 key购买 nike

我正在尝试使用 QPID 设置 SSL,但我在弄清楚如何设置证书时遇到了问题。我已经制作了一个证书数据库并向其中添加了一个自签名证书,如下所示:

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++ Broker,将 ${CERT_DIR}${NICKNAME}${CERT_PW_FILE} 传递给它>。代理日志告诉我 SSL 监听器正在我选择的端口上运行。

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

**[System] error Error reading socket: SSL peer cannot verify your certificate [-12271].**

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

谢谢

最佳答案

这适用于 API 的 QPID Proton 0.23.0 和 C++ Broker 的 QPID CPP 1.38.0。

包含在 斜体 中的文本适用于需要客户端身份验证的用户。

我想出了如何使用自签名证书来做到这一点:

  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 [数据库目录].
  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++ Broker:

[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 Proton 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. 将客户端证书导出为证书和 key .pem 文件:
    • 证书:openssl pkcs12 -in client.p12 -clcerts -nokeys -out clientcert.pem
    • key :openssl pkcs12 -in client.p12 -nocerts -out clientkey.pem

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

关于c++ - QPID C++ 代理和 QPID-CPP SSL 证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50912506/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com