我正在围绕供应商提供的基于XML的API构建一组Python绑定。供应商要求所有交易都通过SSL进行。使用Linux机箱,我为我的应用程序创建了一个密钥文件和CSR。然后,使用他们的自助服务门户网站,我使用该CSR生成证书。在向API发出SSL请求时,都会使用密钥文件和证书。
我现在正在设计异常类,以使错误消息更加冗长(并且希望对使用我的绑定的开发人员更有用)。我的部分测试包括更改密钥文件:在这里转换几个字符,用随机字符替换4或5,等等。令我惊讶的是,更改密钥文件没有任何效果!只要我没有更改它的总长度,API就不会抱怨错误的密钥文件。我能够抛出错误的唯一方法是从另一个应用程序中交换一个完全不同的密钥。此时,API抱怨公共名称不匹配。
这是正常行为还是供应商没有正确实施SSL?
答案 0 :(得分:3)
某些私钥格式是多余的,可以在不破坏密钥材料的情况下进行更改。事实上,您提供的信息不足以做出任何假设。至少有一些关于保存私钥的格式的知识会很方便。
事实上,使用损坏或错误密钥的身份验证将不会发生。在数学上不可能使用错误的私钥进行身份验证(假设协议的服务器端部分正常工作)。
答案 1 :(得分:1)
该私钥包含一些大整数的Base64编码的ASN.1编码,没有任何CRC校验等。此外,密钥标识符是通过公钥部分计算的,而不是私有部分。因此,当某些中间字节被更改时,不可能检查它的有效性,并且当签名检查失败时,连接端会抛出错误。