nginx 正向代理 配置https 双向认证

nginx 正向代理 配置https 双向认证,第1张

项目中需要使用代理访问目标服务器,服务方只接受https请求,并且使用双向认证 经历了一番波折总算配置成功

现在讲配置过程记录下来。

首先是nginx 配置问题

查阅官方文档 

http://nginxorg/en/docs/http/ngx_http_proxy_modulehtml

以下两项配置https 客户端认证私钥与证书

proxy_ssl_certificate

proxy_ssl_certificate_key

以下项目配置代理转发地址

proxy_pass https://127001:8443$request_uri;

配置文件

其中有一个坑在与配置代理转发地址时,如果不添加https:// 客户端请求的时候会报错,所以这里一定要写上。

上面这些都配置好后,代理就能正常使用了。

此外,证书问题可能有些人还会遇到问题,推荐的解决方案是在linux 下使用keytool+opensll 来进行证书转换,openssl需可能需要单独安装,具体方式可以问度娘。

以下提供从jks中获取pem格式证书和私钥的方法:

1、提取公钥:

切换到jks证书的存储路径,执行如下命令:keytool -list -rfc -keystore demojks -storepass demopwd

将证书内容完整复制,粘贴到文件中,保存为cerpem

2、提取私钥

私钥无法直接提取,需要将jks进行转换

1)keytool -importkeystore -srckeystore demjks -destkeystore demop12 -srcstoretype jks -deststoretype pkcs12

2)openssl pkcs12 -nodes -in 10411004511201290p12 -out demopem

vim demopem 

将-----BEGIN PRIVATE KEY-----  ……-----END PRIVATE KEY----- 之间内容(包含) 进行复制,粘贴到新文件中,保存名称为privateKeypem 

或者可以直接执行第二个提取私钥操作 执行vim demopem  后可以看到证书和私钥,分别保存成两个pem文件即可。

代理服务器分好几种, 常见的( 网页代理服务器,共享代理服务器)

网页代理服务器:

一:打开IE浏览器→“工具”,点击“Internet 选项”。在对话框下,点击“连接”选项卡,然后点击“局域网设置”按钮 在弹出的“局域网(LAN)设置”对话框下,选中“为 LAN 使用代理服务器”的复选框。然后点击“高级”按钮 在弹出的“代理服务器设置”对话框下,设置不同类型的代理服务器(如 HTTP、HTTPS 或 FTP)。然后输入“要使用的代理服务器地址”,点击“确定”按钮即可。

共享代理服务器:

双网卡主机(服务器)在上网名称处右键点属性设置共享(共享时选择的是非连上网的网卡),然后点共享选项卡,并在允许其他网络用户通过此计算机的Internet连接来连接前打钩。选择本地连接作为Internet连接共享的设备。如果此时有错误,能共享时,查看防火墙并开启,择控制面板-管理工具-双击服务,打开windows firewall,让其启动,自动启动即可。

java设置代理

package compathtest;

import javaioBufferedInputStream;

import javaioBufferedOutputStream;

import javaioFileOutputStream;

import javanetURL;

import javanetURLConnection;

public class TURLConnection {

public static void main(String args[]) throws Exception

{

//设置代理上外网

SystemgetProperties()put("proxySet", "true");

SystemgetProperties()put("proxyHost", "1723117014");

SystemgetProperties()put("proxyPort", "8080");

/

如果需要验证用户

//AuthenticatorsetDefault(new MyAuthenticator());

/

URL url=new URL("http://wwwcsdnnet");

URLConnection urlCon=urlopenConnection();

/

方法1,一次过读取所有信息

/

BufferedInputStream bis=new BufferedInputStream(urlCongetInputStream());

BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("C:aahtm"));

byte b[]=new byte[bisavailable()];

bisread(b);

boswrite(b);

bosflush();

bisclose();

bosclose();

/

方法2,一个个字节地读取

/

// InputStream is=urlCongetInputStream();

// FileOutputStream fos=new FileOutputStream("C:bbhtm");

// int tmp=0;

// while((tmp=isread())!=-1)

// {

// foswrite(tmp);

// }

// fosflush();

// fosclose();

// isclose();

}

}

package compathtest;

import javanetAuthenticator;

import javanetPasswordAuthentication;

public class MyAuthenticator extends Authenticator {

private String name ;

private String password;

public MyAuthenticator() {

super();

// TODO Auto-generated constructor stub

}

public MyAuthenticator(String name, String password) {

super();

// TODO Auto-generated constructor stub

thisname = name;

thispassword = password;

}

public String getName() {

return name;

}

public void setName(String name) {

thisname = name;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

thispassword = password;

}

protected PasswordAuthentication getPasswordAuthentication() {

return new PasswordAuthentication(thisgetName(),thisgetPassword()toCharArray());

}

}

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » nginx 正向代理 配置https 双向认证

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情