如何生成自签名双向认证证书 ssl

开始正式生成证书

1.创建CA私钥: ca.key

openssl genrsa -out ca.key 1024

2.创建根证书请求文件ca.csr:

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

这里需要填入配置信息:

Country Name (2 letter code) [AU]:cn 国家名(2个字母的代号)

State or Province Name (full name) [Some-State]:cq 省

Locality Name (eg, city) []:cq 市

Organization Name (eg, company) [Internet Widgits Pty Ltd]:gs 公司名

Organizational Unit Name (eg, section) []:gs  组织或部门名

Common Name (eg, YOUR name) []:doris_ca  域名或自己名字(ca证书不要用跟服务端证书或者客户端证书一个common name 会报错!)

Email Address []:   邮箱地址(不填直接回车)

A challenge password []:123456 密码

An optional company name []:gs  公司名

3.自签根证书ca.cer:

openssl x509 -req -in ca.csr -out ca.cer -signkey ca.key -CAcreateserial -days 3650

4.【这一步可做可不做】生成p12格式根证书ca.p12(密码填写123456,之前ca.csr的密码,ps:这里输入的时候是不可见的输入完成后回车即可)

openssl pkcs12 -export -clcerts -in ca.cer -inkey ca.key -out ca.p12

5.生成服务端私钥key server.key:

openssl genrsa -out server.key 1024

6.生成服务端请求文件 server.csr

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

填入证书配置信息:

Country Name (2 letter code) [AU]:cn 国家名(2个字母的代号)

State or Province Name (full name) [Some-State]:cq 省

Locality Name (eg, city) []:cq 市

Organization Name (eg, company) [Internet Widgits Pty Ltd]:gs 公司名

Organizational Unit Name (eg, section) []:gs  组织或部门名

Common Name (eg, YOUR name) []: *.test.com【适用于a.test.com ,b.test.com 等等】(尽量用服务器域名,不然会引起服务器警告,如果都是批量后缀的域名。建议用通配符域名)

Email Address []:   邮箱地址

A challenge password []:123456 密码

An optional company name []:gs  公司名

server.csr

7.生成服务端证书server.cer(ca.cer,ca.key,servr.key,server.csr这4个生成服务端证书):

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

8.生成客户端key client.key:

openssl genrsa -out client.key 1024

9.生成客户端请求文件client.csr:

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

填入证书配置信息:

Country Name (2 letter code) [AU]:cn 国家名(2个字母的代号)

State or Province Name (full name) [Some-State]:cq 省

Locality Name (eg, city) []:cq 市

Organization Name (eg, company) [Internet Widgits Pty Ltd]:gs 公司名

Organizational Unit Name (eg, section) []:gs  组织或部门名

Common Name (eg, YOUR name) []:ssl_doriszheng  签发机构\开发者人员(这里随意)

Email Address []:   邮箱地址

A challenge password []:123456 密码

An optional company name []:gs  公司名


10.生成客户端证书 client.cer:

openssl x509 -req -in client.csr -out client.cer -signkey client.key -CA ca.cer -CAkey ca.key -CAcreateserial -days 3650


11.【可做可不做】生成客户端p12格式根证书client.p12(密码设置123456):

openssl pkcs12 -export -clcerts -in client.cer -inkey client.key -out client.p12

至此,证书就制作完毕了:



服务器端配置(详细配置过程可见:https://www.jianshu.com/p/bbf853fc28f3):

server {

        listen      443 ssl;      #http的端口号是80,https的端口为443

server_namewww.test.com#服务器域名 配置多个时不要添加;号即可

    ServerName 127.0.0.1

    ServerName 192.168.0.111;

    ssl on;   #开启ssl

    ssl_certificate C:\Users\Administrator\Desktop\ssl4\server.cer;     #服务器证书文件

    ssl_certificate_key C:\Users\Administrator\Desktop\ssl4\server.key; #服务器证书密匙

    ssl_client_certificate C:\Users\Administrator\Desktop\ssl4\ca.cer;  #根证书

    ssl_verify_depth 1;

    ssl_verify_client on; #开启客户端验证

  location / {

            root   F:\PHPStudy\PHPTutorial\WWW;   #本地网站文件目录

            index  index.HTML index.html index.htm ;

        }      

        }

如何判断双向校验成功

curl -vvvv --request GET --header "Content-Type: application/json" --cacert /Users/doris/Downloads/ssl_new/ca.cer --cert /Users/doris/Downloads/ssl_new/client.cer --key /Users/doris/Downloads/ssl_new/client.key --pass NgnCert1234 "https://a.test.com"

--cacert ca证书  【第三个步骤生成】

--cert  客户端证书  【第十个步骤生成】

--key 客户端私钥  【第八个步骤生成】

问题1:curl: (60) SSL certificate problem: unable to get local issuer certificate

curl -vvvv --request GET --header "Content-Type: application/json" "https://test.ioa.tencent.com/test"

原因:请求没有带上ca证书,无法校验服务器的证书 

解决方法1:

curl 加上-cacert ca证书 校验服务器证书

curl -vvvv --request GET --header "Content-Type: application/json" --cacert /Users/doris/Downloads/ssl_new/ca.cer --cert /Users/doris/Downloads/ssl_new/client.cer --key /Users/doris/Downloads/ssl_new/client.key --pass NgnCert1234 "https://a.test.com"

解决方法2:

curl 加上-k 可以不校验服务器证书。

curl -k -vvvv --request GET --header "Content-Type: application/json" --cert /Users/doris/Downloads/ssl_new/client.cer --key /Users/doris/Downloads/ssl_new/client.key --pass NgnCert1234 "https://a.test.com"


问题2:error 18 at 0 depth lookup:self signed certificate

网上给出的答复是:

Whatever method you use to generate the certificate and key files, the Common Name value used for the server and client certificates/keys must each differ from the Common Name value used for the CA certificate. Otherwise, the certificate and key files will not work for servers compiled using OpenSSL.

When OpenSSL prompts you for the Common Name for each certificate, use different names.

解决方案:

当你在创建ca.csr, server.csr, client.csr时 要求你填写的 Common Name。

ca.csr 的common name 不能和server.csr, client.csr填的相同

参考文档链接:https://www.jianshu.com/p/094c7fc8cb85,感谢作者CQ_TYL

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,761评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,953评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,998评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,248评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,130评论 4 356
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,145评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,550评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,236评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,510评论 1 291
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,601评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,376评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,247评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,613评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,911评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,191评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,532评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,739评论 2 335

推荐阅读更多精彩内容