美文网首页
OpenSSL创建带SAN扩展的证书并进行CA自签

OpenSSL创建带SAN扩展的证书并进行CA自签

作者: mklee | 来源:发表于2017-09-20 15:38 被阅读909次

什么是 SAN

SAN(Subject Alternative Name) 是 SSL 标准 x509 中定义的一个扩展。使用了 SAN 字段的 SSL 证书,可以扩展此证书支持的域名,使得一个证书可以支持多个不同域名的解析。

来看看百度的证书,百度证书的扩展域名有这么多,其中还有了*.hao123.com,那我们再看看www.hao123.com的证书

image.png

发现的确是用的前面的百度证书

image.png

所以SAN带来的好处就可以看出来了,一个证书可以用在各种不同的域名下,不需要一个域名买一个证书了。

利用OpenSSL创建证书

因为是本地环境,直接用OpenSSL给自己颁发一个CA根证书用于后面给服务器做CA签署。

  1. 生成CA密钥
openssl genrsa -des3 -out ca.key 2048
  1. 生成CA根证书
openssl req -sha256 -new -x509 -days 365 -key ca.key -out ca.crt \
    -subj "/C=CN/ST=GD/L=SZ/O=lee/OU=study/CN=testRoot"
  1. 生成服务器密钥
openssl genrsa -des3 -out server.key 2048
  1. 生成服务器证书请求文件
openssl req -new \
    -sha256 \
    -key server.key \
    -subj "/C=CN/ST=GD/L=SZ/O=lee/OU=study/CN=bdstatic.com" \
    -reqexts SAN \
    -config <(cat /etc/pki/tls/openssl.cnf \
        <(printf "[SAN]\nsubjectAltName=DNS:*.bdstatic.com,DNS:*.baidu.com")) \
    -out server.csr

5.CA签署服务器证书

openssl ca -in server.csr \
        -md sha256 \
        -keyfile ca.key \
    -cert ca.crt \
    -extensions SAN \
    -config <(cat /etc/pki/tls/openssl.cnf \
        <(printf "[SAN]\nsubjectAltName=DNS:*.bdstatic.com,DNS:*.baidu.com")) \
    -out server.crt

之后把生成好的服务器证书和服务器密钥在服务器(ngnix,tomcat)里配置好,并且把ca.crt证书导入到浏览器的受信任的根证书颁发机构里,在浏览器访问就不会有红叉叉了。

image.png image.png

注意事项

  1. -subj "/C=CN/ST=GD/L=SZ/O=lee/OU=study/CN=testRoot"这行可以不要,会有命令交互填写相关信息。
image.png
  1. 哈希算法不要使用sha1,因为Chrome浏览器下会提示不安全,上面都是用的sha256。
  2. /etc/pki/tls/openssl.cnf文件是缺省的OpenSSL配置文件,可能环境不同路径也不同。
  3. 服务器证书请求文件的国家,省,市要和CA证书一致,这个在openssl.cnf默认配置中指定了,可以修改。
image.png
  1. 关于私钥的加密格式,因为笔者是在netty里使用的ssl协议,而netty仅支持PKCS8格式的私钥(见http://netty.io/wiki/sslcontextbuilder-and-private-key.html),需要对密钥格式进行转换
openssl pkcs8 -topk8 -nocrypt -in server.key -out server.pem

代码如下

SslContext serverSslCtx = SslContextBuilder.forServer(new File("E:/server.crt"),new File("E:/server.pem")).build();

参考

OpenSSL SAN 证书
使用OpenSSL生成多域名自签名证书进行HTTPS开发调试

相关文章

  • OpenSSL创建带SAN扩展的证书并进行CA自签

    什么是 SAN SAN(Subject Alternative Name) 是 SSL 标准 x509 中定义的一...

  • gRpc 相关

    CA证书自签单向验证Openssl命令 应用 grpc server_http CA证书自签双向验证Openssl...

  • nginx配置https

    1 使用openssl生成证书 这里我们使用openssl进行CA证书自签,用来学习,有条件的可以让第三方机构进行...

  • 2020-03-23 关于openssl 双向认证

    工作中解决利用Openssl自签名证书,双向认证的总结: 创建文件夹,证书编号存放文件: 生成ca key, 自签...

  • 一键自签本地自签名SAN域名证书HTTPS工具(最新版Chrom

    一键自动生成本地自签名SAN域名证书工具 原生OpenSSL生成自签名SAN CA域名(V3签名),在Linux、...

  • nginx ssl双向认证实战

    本次实验所使用操作系统为Ubuntu20.04,通过openssl工具生成所有的ssl证书。 1、生成自签CA证书...

  • 创建CA

    创建CA和申请证书 创建私有CA: 首先在CA服务器端创建CA。 先去看openssl的配置文件: /etc/pk...

  • nginx使用https

    1. 安装openssl 2. 生成证书 1. CA证书 创建私钥 创建csr证书请求 生成crt证书 2. 服务...

  • 证书生成过程及自建CA(一)

    关键字: 自建CA, openssl, https证书,带有多域名 需求 自建CA并签发证书,可以将自建CA的根证...

  • 配合阿里云Slb证书过程

    以下全部是阿里的官方文档,这里只是备份。 使用OpenSSL生成自签CA证书前提条件确保您已经了解负载均衡的证书要...

网友评论

      本文标题:OpenSSL创建带SAN扩展的证书并进行CA自签

      本文链接:https://www.haomeiwen.com/subject/iblosxtx.html