在CentOS上制作CA证书并绑定到Nginx上

SSL证书生成与Nginx配置
本文介绍如何使用OpenSSL生成SSL证书,并详细说明了配置Nginx以支持单向及双向SSL验证的过程。
//创建根证书密钥文件
openssl genrsa -des3 -out test.key
//创建根证书的申请文件
openssl req -new -key test.key -out test.csr
//创建一个自当前日期起为期十年的根证书
openssl x509 -req -days 3650 -sha1 -extensions v3_ca -signkey test.key -in test.csr -out test.crt

//创建服务器证书密钥
openssl genrsa -des3 -out server.key 2048
//创建服务器证书的申请文件
openssl req -new -key server.key -out server.csr
//创建自当前日期起有效期为期两年的服务器证书
openssl x509 -req -days 730 -sha1 -extensions v3_req -CA test.crt -CAkey test.key -CAserial test.srl -CAcreateserial -in server.csr -out server.crt

//创建客户端证书密钥文件
openssl genrsa -des3 -out client.key 2048
//创建客户端证书的申请文件
openssl req -new -key client.key -out client.csr
//创建一个自当前日期起有效期为两年的客户端证书
openssl x509 -req -days 730 -sha1 -extensions v3_req -CA test.crt -CAkey test.key -CAserial test.srl -CAcreateserial -in client.csr -out client.crt

//将客户端证书文件client.crt和客户端证书密钥文件client.key合并成客户端证书安装包client.pfx
openssl pkcs12 -export -in client.crt -inkey client.key -out client.pfx

//保存生成的文件备用,其中server.crt和server.key是配置单向SSL时需要使用的证书文件,client.crt是配置双向SSL时需要使用的证书文件,client.pfx是配置双向SSL时需要客户端安装的证书文件

//证书合并
cat server.key server.crt > server.pem
cat client.key client.crt > client.pem

//配置到Nginx中:

server {
    #添加443监听
    listen       443;
    #开启SSL
    ssl  on;
    #指定PEM格式的证书文件   
    ssl_certificate      /etc/nginx/conf.d/keys/server.pem;
    ssl_client_certificate     /etc/nginx/conf.d/keys/client.pem;
    ssl_certificate_key  /etc/nginx/conf.d/keys/server.key;

    ssl_session_cache shared:SSL:1m;
    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;

    #将所有的http请求通过rewrite重写到https上即可
    # rewrite ^(.*)$  https://$host$1 permanent;
}


// 所有的操作完成后需要重启 Nginx 并输入证书密码
 service nginx restart

 

附 nginx.conf:

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

events {
    worker_connections 1024;
}

http {
    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;
	
	upstream backend {
		server 127.0.0.1:8080;
	}

    server {
        listen 443;
        server_name loyom.com; #填写绑定证书的域名
        ssl on;
        ssl_certificate /opt/ca/1_loyom.com_bundle.crt;
        ssl_certificate_key /opt/ca/2_loyom.com.key;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1.2;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers on;
		
		location / {
			proxy_set_header Host $host;
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		   
			proxy_buffering off;
			proxy_pass http://backend;
        }
    }
	
	server {
        listen 80;
		
        location / {
			proxy_set_header Host $host;
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		   
			proxy_buffering off;
			proxy_pass http://backend;
        }
    }
}

 

转载于:https://my.oschina.net/Kxvz/blog/817639

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值