有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

通过X.509客户端证书(.cer文件)进行Python身份验证并与Java进行比较

我目前正在尝试用python复制一个java工具,该工具允许用户对云中的应用程序进行一些RESTAPI调用。 使用此Java工具,您可以创建使用传统用户/密码类型凭据的脚本,也可以创建一个新的脚本。cer证书

我可以使用请求库在Python中轻松地重新创建用户/密码身份验证

但对于证书的方式,这是另一回事。几天来,我一直在寻找一个用Python实现的解决方案,但它看起来像。cer证书对于Python是不够的

我对SSL/TLS非常陌生,所以我可能不了解它背后的所有概念,但似乎除了。cer证书(即PEM格式,包含公钥和“----开始证书----------结束证书------”部分),我需要获取私钥。这很奇怪,因为Java工具根本不需要它

如果有人能在这个话题上启发我,那就太棒了

谢谢

克里斯

其他信息:

正如Steffen所问(我真的非常感谢你的帮助),我会更准确地说。 我正在尝试使用Python执行此请求:

req=请求。请求('GET','https://api.YXZ.com/1/9/whatever/',cert='certificate.pem')

我收到以下错误消息:

请求。例外情况。SSLError:HTTPSConnectionPool(host='api.XZY.com',port=443):url超过最大重试次数:/1/9/无论什么(由SSLError引起(SSLError(336265225,u'[SSL]PEM lib(_SSL.c:2603)))

我相信这是由于我的证书,因为我可以用基本的身份验证来执行这个请求

由于以下命令,我可以看到证书中的内容:

openssl x509-text-notify-DER-in证书。cer

这给了我一个如下格式的文本:

数据: 签名算法: 发行人 有效性: 主题公钥 签名算法: -----开始证书----- -----结束证书------


共 (1) 个答案

  1. # 1 楼答案

    ... I would need to get the private key. Which is weird as the Java tool does not need that at all.

    如果要对自己进行身份验证,则始终需要证书的私钥,即服务器端的服务器证书和客户端站点的客户端证书。如果您只有证书而没有私钥,则只能验证对等方的身份验证,而不能验证您自己。这是独立于Java、Python

    如果您有一个使用Java的工作客户端证书,那么您的密钥存储中也有匹配的私钥,但可能没有将其导出以供Python使用。或者根本没有客户端证书,但您只检查服务器证书的有效性(不需要私钥)。在这种情况下,您不应该尝试在Python中将此证书用作客户端证书。 但是,在没有任何代码和/或详细错误消息的情况下,很难准确说出问题所在