自制证书实现网站https访问2

制作过程
1,自制CA私钥
openssl genrsa -des3 -out ca.key 4096

2,自制CA证书
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt

3,自制Server私钥,生成免密码版本
openssl genrsa -des3 -out server.key 4096
openssl rsa -in server.key -out server.nosecret.key

4,制作服务端csr文件
openssl req -new -key server.key -out server.csr

5,用CA证书私钥对csr签名(CA不能用X509,这点需要注意)生成Server证书
openssl ca -days 3650 -in server.csr -cert ca.crt -keyfile ca.key -out server.crt
到此制作完成得到六个文件, 可以实现服务端ssl认证, 需要实现双向认证还要制作客户端证书

6,制作客户端秘钥
openssl genrsa -des3 -out client.key 1024

7,制作客户端csr文件
openssl req -new -key client.key -out client.csr

8,制作客户端证书
openssl ca -in client.csr -cert ca.crt -keyfile ca.key -out client.crt -days 3650

9,得到客户端证书( 客户端安装 )
openssl pkcs12 -export -inkey client.key -in client.crt -out client.pfx

需要注意的几个问题
1,在linux下面执行上面六条命令,按提示输入基本就可以了
2,提示输入密码时,统一一个简单密码就可以了,防止弄混了
3,提示输入其它信息时,全部用同一串字符就可以了,防止混乱,例如:gd
4,有两处输入域名的地方【Common Name 】一定要输入正确的网站域名,例如www.gd.cn 否则部署后浏览器会提示域名不一致,不要带端口号
5,最后检查六个文件都生成了,而且都有内容,如果出现0字节的文件说明没成功
6,如果出现类似报错: /etc/pki/CA/index.txt: No such file or directory
执行下面的语句就可以了
touch /etc/pki/CA/index.txt
touch /etc/pki/CA/serial
Echo “01” > /etc/pki/CA/serial
7,如果出现类似报错:TXT_DB error number 2
修改/etc/pki/CA/index.txt.attr文件:yes改为no
unique_subject = yes --> unique_subject = no

1,客户端单向验证应用( 此方法客户端没有证书也能访问 )
服务端Nginx配置
把 server.crt 和 server.nosecret.key 拷贝到 nginx\conf\ssl 目录下面

	server {
		listen 443;
		server_name 192.168.4.30;
		
		ssl on;
		ssl_certificate ssl/server.crt;
		ssl_certificate_key ssl/server.nosecret.key;

        location / {
            root   html;
            index  index.html index.htm;
        }
	}

客户端安装
双击ca.crt进行安装,安装到受信任的机构里面

重启浏览器访问https

2,服务端客户端双休验证( 此方法客户端只需要也必须安装client.pfx )

	server {
		listen 443;
		server_name hzwl.plasma.gdmk.cn;
		
		//按如下配置可以开启单向验证,客户端安装ca.crt
		#ssl on;
		#ssl_certificate ssl/server.crt;
		#ssl_certificate_key ssl/server.nosecret.key;
		//按如下配置可以开启双休验证,客户端安装client.pfx
		#ssl_client_certificate ssl/ca.crt;
		#ssl_verify_client on;	

		location / {
			proxy_pass http://localhost:44005/;
		}
	}

Nginx配置笔记:

http {
    include       mime.types;
    default_type  application/octet-stream;

	fastcgi_connect_timeout 300;
    fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;
    fastcgi_buffer_size 64k;
    fastcgi_buffers 4 64k;
    fastcgi_busy_buffers_size 128k;
    fastcgi_temp_file_write_size 128k;

    sendfile        on;

    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
	
	server {
		listen 443;
		server_name hzwl.plasma.gdmk.cn;
		
		//按如下配置可以开启单向验证,客户端安装ca.crt
		#ssl on;
		#ssl_certificate ssl/server.crt;
		#ssl_certificate_key ssl/server.nosecret.key;
		//按如下配置可以开启双休验证,客户端安装client.pfx
		#ssl_client_certificate ssl/ca.crt;
		#ssl_verify_client on;	

		location / {
			proxy_pass http://localhost:44005/;
		}
	}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值