配置ssl私有证书

一、生成证书

1.生成秘钥key,运行命令:

生成带密码的:

openssl genrsa -des3 -out server.key 2048
然后你就获得了一个server.key文件.
以后使用此文件(通过openssl提供的命令或API)可能经常回要求输入密码,如果想去除输入密码的步骤可以使用以下命令:

openssl rsa -in server.key -out server.key
生成不带密码的:

openssl genrsa -out server.key 2048

2.创建服务器证书的申请文件server.csr,运行:

openssl req -new -key server.key -out server.csr
注意:
输入如下:
Enter pass phrase for root.key: ← 输入前面创建的密码
Country Name (2 letter code) [AU]:CN ← 国家代号,中国输入CN
State or Province Name (full name) [Some-State]:Changsha← 省的全名,拼音
Locality Name (eg, city) []:Changsha ← 市的全名,拼音
Organization Name (eg, company) [Internet Widgits Pty Ltd]:humiaomuyun ← 公司英文名
Organizational Unit Name (eg, section) []: ← 可以不输入
Common Name (eg, YOUR name) []: ← 此时不输入
Email Address []:xialvli@163.com ← 电子邮箱,可随意填
Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []: ← 可以不输入
An optional company name []: ← 可以不输入

3.创建CA证书:

openssl req -new -x509 -key server.key -out ca.crt -days 3650
其中Country Name填CN,Common Name填主机名也可以不填,如果不填浏览器会认为不安全.(例如你以后的url为https://abcd/xxxx…这里就可以填abcd),其他的都可以不填.

4.创建自当前日期起有效期为期十年的服务器证书server.crt:

openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey server.key -CAcreateserial -out server.crt

5.ls你的文件夹,可以看到一共生成了5个文件:

ca.crt ca.srl server.crt server.csr server.key
其中,server.crt和server.key就是你的nginx需要的证书文件.

二、修改配置

1.conf文件更改
打开你的nginx配置文件,搜索443找到https的配置,去掉这段代码的注释.

 server {

        listen       443;
        server_name  localhost;
        ssl                  on;
        ssl_certificate     /test/server.crt;#配置证书全路径
        ssl_certificate_key  /test/keys/server.key;#配置秘钥全路径
        #ssl_client_certificate ca.crt;#双向认证
        #ssl_verify_client on; #双向认证
 
        ssl_session_timeout  5m;
        ssl_protocols  SSLv2 SSLv3 TLSv1;
        ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
        ssl_prefer_server_ciphers   on;
}

2.nginx 重载配置

nginx -s reload

如果配置不生效就 停掉nginx重新启动 。至此,nginx的https就可以使用了,默认443端口.

配置http自动跳转https

配置到这里如果没有意外的话已经可以通过https访问了,但可能很多用户还是会通过http访问,所以需要将你原来的http重定向到你的https上。

只需要在Nginx配置中加入下面配置:

rewrite ^ https:// h t t p h o s t http_host httphostrequest_uri? permanent;

但要注意的是,不是在你原来443端口下加,这样会死循环的,而是另外启个server,类似于下面的配置:

server {
        listen       80;
        server_name  www.***.com;
        rewrite ^ https://$http_host$request_uri? permanent;    # force redirect http to https
  #rewrite ^(.*)$  https://www.***.com permanent;
    }

server {
        listen 443;
        server_name www.****.com; #填写绑定证书的域名
        ssl on;
        ssl_certificate /xxx/server.crt;
        ssl_certificate_key /xxx/server.key;
  #ssl_client_certificate /xxx/ca.crt;#双向认证
        #ssl_verify_client on; #双向认证
        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;
        location / {
            root   html; #站点目录
            index  index.html index.htm;
        }
    }

这样就能实现重定向了。

如果想同时启用Http和Https,也可以这样配置:

server {
    listen              80;
    listen              443 ssl;
    server_name         www.***.com;
    ssl_certificate     www.***.com.crt;
    ssl_certificate_key www.***.com.key;
    ...
}

总结
配置的时候还是需要仔细,跟着步骤来,人品好的话一次就能搞定啦。大家可以亲身试验下

 server {
        listen       8002;
        rewrite ^(.*)$  https://testx.cloud.huawei.com permanent;
        server_name  testx.cloud.huawei.com;


   }


    server {
        listen       443;
        ssl_certificate     /root/server.crt; #配置证书位置
        ssl_certificate_key  /root/server.key; #配置秘钥位置
  #ssl_client_certificate /xxx/ca.crt;#双向认证
        #ssl_verify_client on; #双向认证
        ssl_protocols  SSLv2 SSLv3 TLSv1;
        ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
        ssl_prefer_server_ciphers   on;
        ssl on;
                gzip on;
        gzip_min_length 1k;
        gzip_comp_level 9;
        gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
        gzip_vary on;
        gzip_disable "MSIE [1-6]\.";
                root /usr/share/nginx/html;


                charset     utf-8;

        location / {
                root html/dist;
                index index.html index.htm;
                try_files $uri $uri/ /index.html;
        }

                location /api {
                        proxy_pass  http://127.0.0.1:8000/;
                        proxy_set_header   X-Forwarded-Proto $scheme;
                        proxy_set_header   Host              $http_host;
                        proxy_set_header   X-Real-IP         $remote_addr;
                }

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值