文档章节

nginx添加ssl模块配置https

lindeyi
 lindeyi
发布于 2016/10/09 10:00
字数 638
阅读 754
收藏 0

精选30+云产品,助力企业轻松上云!>>>

##nginx添加ssl模块步骤##
#1、重新编译添加ssl模块

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

出现如下问题时候需要安装openssl-devel 

./configure: error: SSL modules require the OpenSSL library.
You can either do not enable the modules, or install the OpenSSL library
into the system, or build the OpenSSL library statically from the source
with nginx by using --with-openssl=<path> option.

#2、安装openssl-devel

yum -y install openssl openssl-devel 

#3、生成编译脚本

make 

#4、创建软连接解决libpcre.so.1找不到问题

error while loading shared libraries: libpcre.so.1:
 cannot open shared object file: No such file or directory

出现如上问题时候需要建立软连接,不是所有操作系统都在/usr/local/lib下, 有的在/lib目录下

ln -s /usr/local/lib/libpcre.so.1 /lib64/ 

#5、替换已有脚本

cp ./objs/nginx /usr/local/nginx/sbin/ 
yes 

#6、在nginx配置文件server中加入ssl配置项。如下

 server { 
    server_name  localhost;
    listen 443;
    ssl on;
  
    ssl_certificate  /usr/local/nginx/ssl/mytest.crt; #服务器证书位置 
    ssl_certificate_key  /usr/local/nginx/ssl/mytest.key; #服务器私钥
    #ssl_client_certificate /usr/local/nginx/ssl/ca.crt;     #CA证书用于验证客户端证书的合法性     
    #ssl_verify_client       on;                      #开启对客户端的验证

    ssl_session_timeout  5m; 
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
    #启用TLS1.1、TLS1.2要求OpenSSL1.0.1及以上版本,若您的OpenSSL版本低于要求,请使用 ssl_protocols TLSv1;
    ssl_ciphers  HIGH:!RC4:!MD5:!aNULL:!e
    location / {
            root   html;
            index  index.html index.htm;
    }
}

 

#7、配置所有http转https

server {
       listen       80;
       server_name  localhost;
       return 301 https://$server_name$request_uri;
  }

#8、如果双向认证需要把客户端证书信息带到后台服务,需要如下配置

proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header Client-Cert $ssl_client_cert; # 将客户端证书放到http头中传递给后端的tomcat
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 30;
proxy_send_timeout 15;
proxy_read_timeout 15;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
proxy_ssl_certificate localhost.pem; # 如果后端的tomcat也要求客户端认证,则nginx与tomcat建立连接时会把该证书发送给tomcat
proxy_ssl_certificate_key localhost.key;
proxy_ssl_trusted_certificate chain.pem; # 如果启用了proxy_ssl_verify,则使用该文件中的CA公钥验证后端tomcat的证书
proxy_ssl_verify on; # nginx是否验证后端tomcat的证书
proxy_ssl_verify_depth 2;

#9、服务的拿到客户端证书

// 普通证书获取方式
X509Certificate[] requestCents = (X509Certificate[]) request
				.getAttribute("javax.servlet.request.X509Certificate");
X509Certificate cert = requestCents[0];

// nginx代理证书获取方式
String header = request.getHeader("Client-Cert");
header = header.replace("-----BEGIN CERTIFICATE-----", "").replaceAll("\\t", "").replace("-----END CERTIFICATE-----", "");
Decoder decoder = Base64.getDecoder();
ByteArrayInputStream bio = new ByteArrayInputStream(decoder.decode(header));
CertificateFactory cf = CertificateFactory.getInstance("X.509");
X509Certificate cert = (X509Certificate)cf.generateCertificate(bio);
		
			

centos下一键安装nginx方式:

先添加CentOS 7 EPEL仓库

yum install epel-release

然后通过yum安装nginx

yum install nginx
lindeyi
粉丝 6
博文 16
码字总数 14150
作品 0
海淀
私信 提问
加载中
请先登录后再评论。
nginx配置

配置nginx的前期准备配置nginx的前期准备 1.1.1 申请安全协议证书申请下来的ssl证书文件解压后会有两个文件;一个是.key一个是.pem文件这两个文件是配置https得到关键文件,把两个文件导入到...

osc_nj4g7wto
02/20
0
0
Nginx启动SSL功能,并进行功能优化

一:开始Nginx的SSL模块 1.1 Nginx如果未开启SSL模块,配置Https时提示错误 1 原因也很简单,nginx缺少httpsslmodule模块,编译安装的时候带上--with-httpsslmodule配置就行了,但是现在的情...

sygb
2016/12/22
0
0
nginx如何配置https

首先第一步记得要在安装nginx的时候,要将ssl模块编译进nginx , 也就是文章 https://my.oschina.net/yoblue/blog/3096192 中第3步中间 改成 (但是安装ssl模块需要用到 yum -y install opens...

yoblue
05/21
0
0
nginx 配置https没有ssl_module以及一些错误

一:开始Nginx的SSL模块 1.1 Nginx如果未开启SSL模块,配置Https时提示错误 1 原因也很简单,nginx缺少httpsslmodule模块,编译安装的时候带上--with-httpsslmodule配置就行了,但是现在的情...

osc_4s0ww36w
2018/03/23
4
0
配置nginx支持https

一:开启Nginx的SSL模块 Nginx如果未开启SSL模块,配置Https时提示如下错误: nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf 解释......

osc_5v9u1t19
2019/08/31
2
0

没有更多内容

加载失败,请刷新页面

加载更多

Java知识点--卫语句

在《阿里巴巴Java开发手册》中强制规定:超过 3 层的 if-else 的逻辑判断代码可以使用卫语句、策略模式、状态模式等来实现,其中卫语句即代码逻辑先考虑失败、异常、中断、退出等直接返回的情...

HLee
59分钟前
13
0
实施与扩展:何时使用? 有什么不同? - Implements vs extends: When to use? What's the difference?

问题: 请用一种易于理解的语言或一些文章的链接进行解释。 解决方案: 参考一: https://stackoom.com/question/jTkh/实施与扩展-何时使用-有什么不同 参考二: https://oldbug.net/q/jTkh/...

技术盛宴
今天
28
0
剑指offer之队列中的最大值(C++/Java双重实现)

1.题目描述 请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value、push_back 和 pop_front 的均摊时间复杂度都是O(1)。 若队列为空,pop_front 和 max_value 需要返回...

osc_jvzgahav
今天
12
0
JAVA-过滤器和拦截器1

1、过滤器 (Filter) 过滤器的配置比较简单,直接实现 Filter 接口即可,也可以通过 @WebFilter 注解实现对特定 URL 拦截,看到 Filter 接口中定义了三个方法。 init() :该方法在容器启动初始...

osc_hinb5m98
今天
27
0
模拟红包算法(基于BigDecimal、DecimalFormat、Random类)

基于BigDecimal、DecimalFormat、Random实现模拟红包算法 RedPacket 类 import java.math.BigDecimal;import java.text.DecimalFormat;import java.util.ArrayList;import java.util.Rand......

osc_ml6lx2h4
今天
18
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部