linux7.6安装nginx并使用java8生成的证书配置https
总体来说就是三步: 1.安装nginx, 2.使用java生成证书, 3. 使用nginx配置https
1. 在linux7.6中安装nginx
1.1 下载nginx
下载地址: nginx官网下载地址
1.2 上传到服务器中并解压
tar -zxvf nginx-1.9.9.tar.gz
# 修改文件夹名字为nginx
mv nginx-1.9.9 nginx
1.3 使用nginx默认配置. 并编译安装
进入nginx安装目录
./configure
make
make install
1.4 启动nginx
上面命令执行完后, 进入到nginx的sbin目录下执行如下命令运行nginx
./nginx
在游览器中输入服务端的ip. 检查是不是有 ‘Welcome to nginx!’, 如果有就是启动成功.
下面开始用nginx配置https
1.5 检查nginx是不是有ssl模块
在sbin目录下, 执行如下命令
./nginx -V
如果没有出现 configure arguments: 则表示没有ssl模块. 接下来开始安装ssl模块
1.6 安装ssl模块
回到nginx根目录, 执行下面命令:
./configure --with-http_ssl_module
然后在执行下面命令, 重新编译并运行.
make
make install
然后在重新启动nginx
./sbin/nginx -s reload
最后在运行检测一下配置中是不是有ssl模块
./sbin/nginx -V
出现 ./sbin/nginx -s reload 则表示ssl安装成功.
下面介绍使用java8生成证书
2. 使用java生成证书
cd到jkd目录的bin目录. 找到keytool.exe工具, 在bin目录cmd运行命令:
keytool -genkey -v -alias XXX -keyalg RSA -keystore d:\XXX.keystore -validity 3650
其中XXX是站点域名或IP, -keystore d:\XXX.keystore是生成证书的目标路径, 3650是证书有效天数,
填写秘钥库口令, 输入姓氏 (站点域名), 单位名称, 组织名称, 城市名称, 省市名称, 国家代码(CN), 确认后, 就在路径d:\XXX.keystore生成了证书文件.
如果出现了如下警告, 则执行它提示的命令:
Warning:
JKS 密钥库使用专用格式。建议使用 "keytool -importkeystore -srckeystore d:\XXX.keystore -destkeystore d:\XXX.keystore -deststoretype pkcs12" 迁移到行业标准格式 PKCS12。
在D盘检查是不是已经生成了 XXX.keystore , 如果生成, 现在开始使用nginx配置https
3. 用nginx配置https
3.1 把证书转成为pem
由于上面生成的证书是给tomcat用的, 需要转换成nginx所有的PEM格式证书. 下载JKS2PFX转换工具
这个转换器百度很多, 直接百度’JKS2PFX’下载解压即可.
进入JKS2PFX目录, 运行
JKS2PFX.bat d:\XXX.keystore feihaohan XXX XXX
其中XXX是站点域名或IP
在输入导出密码. 就会在根目录生成三个文件: XXX.crt、XXX.key、XXX.pfx
把XXX.crt改成XXX.pem. 上传到linux中
3.2 nginx配置https
进入到nginx的conf目录, 将nginx.conf内容换成如下
#user nobody;
worker_processes 2;
error_log logs/error.log;
error_log logs/error.log notice;
error_log logs/error.log info;
pid logs/nginx.pid;
events {
use epoll;
worker_connections 1024;
}
worker_rlimit_nofile 65535;
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
server_tokens off;
sendfile on;
tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
underscores_in_headers on;
#gzip on;
include /usr/local/nginx/conf.d/*.conf;
}
其中,新建目录 /usr/local/nginx/conf.d,在此目录中新建443.conf和80.conf
443.conf文件内容如下:
upstream my_443 {
ip_hash;
# 负载均衡
server 127.0.0.1:8600 weight=1;
# server 127.0.0.1:8601 weight=1;
}
server {
listen 443;
server_name XXX; # 你的申请过证书的域名或者IP
client_max_body_size 64M;
fastcgi_read_timeout 3600;
error_page 500 502 503 504 /50x.html;
root /home/html/443/;
try_files $uri $uri/ @rewrite;
ssl on;
ssl_certificate /usr/local/nginx/key/XXX.pem; # 证书pem文件,根据自己证书的所在位置
ssl_certificate_key /usr/local/nginx/key/XXX.key; # 证书key文件,根据自己证书的所在位置
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # 协议配置
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;# 套件配置
ssl_prefer_server_ciphers on;
underscores_in_headers on;
location / {
proxy_pass http://my_443;
add_header 'Access-Control-Allow-Origin' '$http_origin';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET,PUT,POST,DELETE,OPTIONS';
add_header 'Access-Control-Allow-Headers' 'Content-Type,*';
proxy_http_version 1.1; # 支持websocket
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Real-Source-IP $http_real_source_ip;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
80.conf文件内容如下:
server {
listen 80;
server_name localhost;
# 文件上传大小配置
client_max_body_size 100M;
#charset koi8-r;
# access_log logs/host.access.log main;
# location / {
# root html;
# index index.html index.htm;
# }
error_page 404 /404.html;
# location = /404.html {
# root /usr/local/nginx/html;
# }
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
# location = /50x.html {
# root /usr/local/nginx/html;
# }
# location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ {
# proxy_pass http://my_up_stream;
# }
location / {
root /home/html/80;
index index.html index.htm;
}
#将http请求自动跳转到https上
# return 301 https://$server_name$request_uri;
}
其中,在根目录新建目录 /home/html/80,把nginx目录的html下的html文件移动到新建目录中。
最后关闭nginx在重新启动nginx
./nginx -s stop
./nginx
在游览器中检查80端口和443端口是否有内容。
到此 所有内容已经完成。如果对你有帮助, 请点个赞赞吧~ 感谢观看