0°

Nginx 自签名Https证书配置

  • Nginx默认不支持https,支持的是http的80端口
  • 在nginx编译的时候需要编译 --with-http_ssl_module 模块来支持https,而且需要安装依赖包 openssl openssl-devel 来支持ssl
  • https需要证书和私钥,获得证书和私钥的途径可以分为两类,在域名注册商备案后进行申请证书和私钥,而本章要讲解的是使用openssl来生成证书和私钥

自签名https证书实战

1.创建带密码的私钥

mkdir /usr/local/nginx/ssl
cd /usr/local/nginx/ssl/
openssl genrsa -des3 -out server.key 4096                   #4096为私钥长度
Generating RSA private key, 4096 bit long modulus
........................................................................................................++
.................++
e is 65537 (0x10001)
Enter pass phrase for server.key:                           #输入自定义密码(随意)
Verifying - Enter pass phrase for server.key:               #确认输入的密码

2.私钥去除密码
带密码的私钥在https上不能使用,所以需要移除密码

cp -rf server.key server.key.org                            #复制一份密钥
openssl rsa -in server.key.org -out server.key              #将复制过的密钥覆盖掉原来的密钥并且去除密码
Enter pass phrase for server.key.org:                       #输入刚才私钥的密码
writing RSA key

3.创建证书请求文件
使用私钥创建出证书请求文件

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

Country Name (2 letter code) [XX]:CN                                    #输入国家简称
State or Province Name (full name) []:shanghai                          #输入地区省份
Locality Name (eg, city) [Default City]:shanghai                        #输入所在城市
Organization Name (eg, company) [Default Company Ltd]:k8sops            #输入组织名称
Organizational Unit Name (eg, section) []:k8sops                        #输入组织单元名称
Common Name (eg, your name or your server's hostname) []:k8sops         #输入主机名
Email Address []:                                                       #邮箱忽略
    
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:                                                #密码忽略
An optional company name []:                                            #公司名称忽略

4.生成证书

openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt         #3650为有效期
Signature ok
subject=/C=CN/ST=shanghai/L=shanghai/O=k8sops/OU=k8sops/CN=k8sops
Getting Private key

5.文件介绍

server.crt          #证书
server.csr
server.key          #私钥
server.key.org

配置Https

server {
        listen  80;
        server_name k8sops.cn;
        return 301 https://$server_name$request_uri;                #跳转ssl
}

server {
        listen  443 ssl;                                            #这里要加ssl,不然不是加密传输
        server_name k8sops.cn;
        ssl_certificate /usr/local/nginx/ssl/server.crt;            
        ssl_certificate_key /usr/local/nginx/ssl/server.key;
        ssl_session_cache shared:SSL:1m;
        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;
        access_log /usr/local/nginx/logs/access.log main;
        location  / {
            root html;
            index index.html;
        }
}

测试访问

访问 http://k8sops.cn 会自动跳转至 https://k8sops.cn
注:自签名证书不受浏览器信任







「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论