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.conf80.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端口是否有内容。

到此 所有内容已经完成。如果对你有帮助, 请点个赞赞吧~ 感谢观看

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值