我在Python的请求库中有一个关于SSL验证的问题,但我认为比这更笼统。
我当前正在忽略证书验证,因为我需要连接的第三方API使用的是自签名证书。
在请求中关闭SSL验证有什么含义?在现实世界中不验证SSL证书的含义是什么。我可以保证传输的数据是安全/加密的吗?
这是安全罪,因为任何人都可以欺骗此证书并拦截您的流量。您只需将自签名证书添加到使用API的计算机的受信任证书链中即可。您的操作方式取决于操作系统和特定的设置,但是快速的Google会指导您找到正确的解决方案。
我可以保证所传输的数据是安全/加密的吗?
数据已加密(这是TLS的机密性保证),但是由于您未对远程部分进行身份验证(如果禁用证书验证或绕过所有错误),则最好将encrypted内容发送给任何人,包括攻击者,如果您不验证远程方,TLS握手会成功,那么攻击者当然会简单地阅读它。
TLS提供多种功能,其中两个主要功能是身份验证和机密性。它们是正交的(您可以拥有一个而没有另一个),但是如果没有全部,它们可能没有那么有用。
与自然思维相反,身份验证比机密性更为重要,因为如果您不能保证谁是远程方,那么将其加密发送会得到什么?没事。