项目中需要使用代理访问目标服务器,服务方只接受https请求,并且使用双向认证 经历了一番波折总算配置成功
现在讲配置过程记录下来。
首先是nginx 配置问题
查阅官方文档
http://nginx.org/en/docs/http/ngx_http_proxy_module.html
以下两项配置https 客户端认证私钥与证书
proxy_ssl_certificate
proxy_ssl_certificate_key
以下项目配置代理转发地址
proxy_pass https://127.0.0.1:8443$request_uri;
配置文件
其中有一个坑在与配置代理转发地址时,如果不添加https:// 客户端请求的时候会报错,所以这里一定要写上。
上面这些都配置好后,代理就能正常使用了。
此外,证书问题可能有些人还会遇到问题,推荐的解决方案是在linux 下使用keytool+opensll 来进行证书转换,openssl需可能需要单独安装,具体方式可以问度娘。
以下提供从jks中获取pem格式证书和私钥的方法:
1、提取公钥:
切换到jks证书的存储路径,执行如下命令:keytool -list -rfc -keystore demo.jks -storepass demopwd
将证书内容完整复制,粘贴到文件中,保存为cer.pem
2、提取私钥
私钥无法直接提取,需要将jks进行转换
1)keytool -importkeystore -srckeystore dem.jks -destkeystore demo.p12 -srcstoretype jks -deststoretype pkcs12
2)openssl pkcs12 -nodes -in 10411004511201290.p12 -out demo.pem
vim demo.pem
将-----BEGIN PRIVATE KEY----- ……-----END PRIVATE KEY----- 之间内容(包含) 进行复制,粘贴到新文件中,保存名称为privateKey.pem
或者可以直接执行第二个提取私钥操作 执行vim demo.pem 后可以看到证书和私钥,分别保存成两个pem文件即可。