centos 本地虚拟机 nginx添加ssl证书

 

本地环境,无法申请免费的证书,即便是申请下来了,也会因为域名无法使用,那么我们可以使用另外一种方法:openssl

1:安装 openssl

yum install mod_ssl openssl

2:切换至nginx目录创建ssl文件夹(也可以在任何地方创建ssl文件夹,看自己的选择)

[root@localhost ~]# cd /usr/local/nginx/conf/
[root@localhost conf]# mkdir ssl
[root@localhost conf]# cd ssl/
[root@localhost ssl]#

3:生成2048位秘钥

openssl genrsa -out server.key 2048

4:生成证书签名请求(CSR),这里需要填写许多信息,按照上面的提示进行填写即可,如果你想随便填写,那也是可以的。

openssl req -new -key server.key -out server.csr

5:生成类型为X509的自签名证书。有效期设置3650天,即有效期为10年。

openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt

6:执行完以上命令后,会在ssl文件夹内生成三个文件

[root@localhost ssl]# ll
总用量 12
-rw-r--r--. 1 root root 1200 1月  25 22:06 server.crt
-rw-r--r--. 1 root root 1005 1月  25 22:06 server.csr
-rw-r--r--. 1 root root 1679 1月  25 22:05 server.key

7:如果出现这三个文件夹,那么恭喜你,你已经安装完成了!接下来配置nginx支持https

首先打开nginx.conf配置文件,这里就以nginx.conf为例(这里只展示server区块,红色字体部分):

server
    {
        listen 80 default_server reuseport;
        #listen [::]:80 default_server ipv6only=on;
        #https配置开始
        listen       443 ssl;
        ssl_certificate      ssl/server.crt;
        ssl_certificate_key  ssl/server.key;
 
        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;
 
        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;
        #https配置结束
        server_name _;
        index index.html index.htm index.php;
        root  /home/wwwroot/default;

        #error_page   404   /404.html;

        # Deny access to PHP files in specific directory
        #location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; }

        include enable-php.conf;

        location /nginx_status
        {
            stub_status on;
            access_log   off;
        }

        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
            expires      30d;
        }

        location ~ .*\.(js|css)?$
        {
            expires      12h;
        }

        location ~ /.well-known {
            allow all;
        }

        location ~ /\.
        {
            deny all;
        }

        access_log  /home/wwwlogs/access.log;
    }
include vhost/*.conf;

8:重新启动nginx,然后使用https进行访问,https://localhost

[root@localhost ssl]# /etc/init.d/nginx restart

 

posted @ 2021-01-25 22:44  Old·Artist  阅读(863)  评论(0编辑  收藏  举报