背景:在用的nginx 仅支持http 功能,需要扩展 https 功能。
OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。
nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要在linux安装openssl库
1、执行命令安装ssl 库。
yum install -y openssl openssl-devel
默认情况下ssl模块并未被安装,如果要使用该模块则需要在编译nginx时指定–with-http_ssl_module参数。
2、安装 ssl 模块。
思路:在源软件包通过 configure 脚本文件安装
源软件包---rwxr-xr-x 1 1001 1001 2478 Apr 21 2015 configure 执行文件。
1、 ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
2、执行make ,千万不要make install 否则会覆盖现有的nginx
3、make后生成objs目录。 /nginx-1.8.0/objs copy ./objs/nginx 到现有的/usr/local/nginx/sbin/nginx
替换效果。
[root@instance-aj6bejdd sbin]# ./nginx -V
nginx version: nginx/1.8.0
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-23) (GCC)
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
此时,nginx 已经具备ssl 功能。生成证书、添加配置即可。
3、生成证书
1.进入到/usr/local/nginx/conf/下
2、生成证书 server.key
使用命令:openssl genrsa -des3 -out server.key 1024 生成key,会出现以下提示
Generating RSA private key, 1024 bit long modulus
......................................................++++++ .................++++++
e is 65537 (0x10001)
Enter pass phrase for server.key:(此处随意输入证书密码开心就行,比如123456)
Verifying - Enter pass phrase for server.key: (重复输入一次)
3、生成 server.csr
使用命令 openssl req -new -key server.key -out server.csr 生成csr,(注:此步骤生成证书,需要输入国家/地区/公司/个人相关信息,不需要真实,内容差不多就行
4、cp server.key server.key.org
5、openssl rsa -in server.key.org -out server.key
Enter pass phrase for server.key.org: 123456
writing RSA key
6、生成server.csr
命令:openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
到此,证书创建完毕
4、添加配置
server {
listen 443 ssl;
server_name localhost;
ssl_certificate server.crt;
#ssl_certificate cert.pem;
ssl_certificate_key server.key;
#ssl_certificate_key cert.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://172.16.2.109:8989;
proxy_redirect http:// https://;
add_header Cache-Control no-store;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
root html;
index index.html index.htm;
}
}
ok,所有配置完事。。。 ./sbin/nginx -s reload 收工大吉。
ps:效果如图:非官方证书。信任即可