写点什么

OpenSSL 生成 CA 证书及终端用户证书

作者:Java高工P7
  • 2021 年 11 月 11 日
  • 本文字数:1372 字

    阅读完需:约 5 分钟

organizationName = Organization Name (eg, company)


organizationName_default = Sheld


commonName = Common Name (e.g. server FQDN or YOUR name)


commonName_max = 64


commonName_default = Ted CA Test


2、生成 ca 秘钥,得到 ca.key


$ openssl genrsa -out ca.key 4096


3、生成 ca 证书签发请求,得到 ca.csr


$ openssl req -new -sha256 -out ca.csr -key ca.key -config ca.conf


配置文件中已经有默认值了,shell 交互时一路回车就行。


4、生成 ca 根证书,得到 ca.crt


$ openssl x509 -req -days 3650 -in ca.csr -signkey ca.key -out ca.crt


三、生成服务端证书




1、配置文件


准备配置文件,得到 server.conf,内容如下:


[ req ]


default_bits = 2048


distinguished_name = req_distinguished_name


req_extensions = req_ext


[ req_distinguished_name ]


countryName = Country Name (2 letter code)


countryName_default = CN


stateOrProvinceName = State or Province Name (full name)


stateOrProvinceName_default = JiangSu


localityName = Locality Name (eg, city)


localityName_default = NanJing


organizationName = Organization Name (eg, company)


organizationName_default = Sheld


commonName = Common Name (e.g. server FQDN or YOUR name)


commonName_max = 64


commonName_default = www.ted2018.com


[ req_ext ]


subjectAltName = @alt_names


[alt_names]


DNS.1 = www.ted-go.com


DNS


【一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义】
浏览器打开:qq.cn.hn/FTf 免费领取
复制代码


.2 = www.ted2018.com


IP = 192.168.93.145


Chrome 58以后不再使用CN校验地址(就是就是浏览器地址栏 URL 中的那个地址 host)了,而是使用 SAN,注意配置里写对,IE 11 还是使用 CN


2、服务端密钥


生成秘钥,得到 server.key,命令如下:


$ openssl genrsa -out server.key 2048


3、服务端 CSR


$ openssl req -new -sha256 -out server.csr -key server.key -config server.conf


配置文件中已经有默认值了,shell 交互时一路回车就行。


4、服务端证书


用 CA 证书生成终端用户证书,得到 server.crt


$ openssl x509 -req -days 3650 -CA ca.crt -CAkey ca.key -CAcreateserial -in server.csr -out server.crt -extensions req_ext -extfile server.conf


四、验证




1、配置 web 服务器


Web 服务器选用 nginx,关键配置如下:


server {


listen 443 ssl;


server_name localhost;


root D:\websocketd-0.3.0-windows_amd64;


ssl_certificate server.crt;


ssl_certificate_key server.key;


ssl_session_cache shared:SSL:1m;


ssl_session_timeout 5m;


ssl_ciphers HIGH:!aNULL:!MD5;


ssl_prefer_server_ciphers on;


location / {


index index.html index.htm;


}


}


把生成好的 server.crt 和 server.key 文件放在与 nginx.conf 同级目录下,然后启动 nginx。


2、改 hosts


在 /etc/hosts 文件中添加以下内容:


127.0.0.1 www.ted2018.com


3、添加 CA 根证书


浏览器右键 ca.crt 安装,安装到“受信任的根证书颁发机构”(不然 server.crt 还是不受信任的)


4、Google 浏览器验证


Chrome 浏览器访问https://www.ted2018.com

用户头像

Java高工P7

关注

还未添加个人签名 2021.11.08 加入

还未添加个人简介

评论

发布
暂无评论
OpenSSL 生成CA证书及终端用户证书