如何在HTTP.jl中使用客户端证书构造HTTP请求
HTTP.jl 携带客户端证书发送请求的实现方法
你之前的写法问题在于:直接向MbedTLS.SSLConfig传入证书、私钥路径的用法不符合接口定义,这个构造函数的入参不是证书文件路径,所以无法正确加载客户端证书。
以下是可正常运行的实现代码:
using HTTP, MbedTLS # 初始化SSL配置 tls_config = MbedTLS.SSLConfig() # 加载系统根证书(用于校验服务端证书有效性,公共CA签发的服务端证书不需要额外修改) MbedTLS.ca_chain!(tls_config) # 加载客户端证书 client_cert = MbedTLS.crt_parse(read("cert.pem", String)) MbedTLS.cert!(tls_config, client_cert) # 加载客户端私钥,私钥有密码的话第二个参数传密码字符串即可 client_key = MbedTLS.parse_keyfile("private.key") MbedTLS.key!(tls_config, client_key) # 携带客户端证书发起请求 response = HTTP.request("GET", "你的目标请求地址", sslconfig = tls_config)
注意事项
- 如果你访问的服务端使用自签名证书,测试环境下可以关闭服务端证书校验,添加参数
require_ssl_verification=false即可,写法为:HTTP.request("GET", "目标地址", sslconfig = tls_config, require_ssl_verification = false),该配置存在安全风险,生产环境请勿使用 - 该实现逻辑和Python Requests的
cert参数功能完全一致,等价于你给出的Python示例代码
内容的提问来源于stack exchange,提问作者tomaaron
相关产品推荐
相关产品推荐

