使用 openssl 创建站点认证证书

本贴最后更新于 1924 天前,其中的信息可能已经物是人非

可以使用免费的证书认证(有独立域名的情况下), 也可以使用 openssl 自行签发证书。

本文主要是给我的 docker 私有仓库用户上 https 所以自行签发证书( 默认 docker client 的通信是用的 https 但是目前我的本地服务器(在本地虚拟机中)是用的 http 导致通信不畅, 也可修改 docker 的配置让其使用 http 但是我想在 IDEA 中也用上, 所以还是配个 https 比较稳妥, 顺便学习下 openssl


参考文章:
http://xstarcd.github.io/wiki/sysadmin/openssl_genrsa_req_sign.html

简介

制作证书步骤
一般情况下,制作证书要经过几个步骤,如上图所示。

  • 首先用 openssl genrsa 生成一个私钥
  • 然后用 openssl req 生成一个签署请求
  • 最后把请求交给 CA,CA 签署后就成为该 CA 认证的证书

如果生成签署请求时加上-x509 参数,那么就直接生成一个 self-signed 的证书,即自己充当 CA 认证自己。

如果您只是想做一张测试用的电子证书或不想花钱去找个 CA 签署,您可以造一张自签 (Self-signed) 的电子证书。当然这类电子证书没有任何保证,大部份软件偶到这证书会发出警告,甚至不接收这类证书。使用自签名(self-signed)的证书,它的主要目的不是防伪,而是使用户和系统之间能够进行 SSL 通信,保证密码等个人信息传输时的安全。

这里先说下证书相关的几个名词:

  • RSA : 私钥能解密用证书公钥加密后的信息。通常以 .key 为后缀,表示私钥也称作密钥。是需要管理员小心保管,不能泄露的。
    * CSR(Certificate Signing Request) : 包含了公钥和名字信息。通常以 .csr 为后缀,是网站向 CA 发起认证请求的文件,是中间文件。
  • crt : 证书通常以 .crt 为后缀,表示证书文件。
  • CA(Certifying Authority) : 表示证书权威机构,它的职责是证明公钥属于个人、公司或其他的组织。

脑图展示

大致的内容我话了个脑图, 大概就 8 个步骤
openssl 自行签发证书

具体操作

CA 证书部分

1. 创建私钥

命令如下:

openssl genrsa -out "root-ca.key" 4096

1. 创建私钥

2. 用私钥创建 CA 证书

openssl req \
          -new -key "root-ca.key" \
          -out "root-ca.csr" -sha256 \
          -subj '/C=CN/ST=GuangDong/L=ShenZhen/O=Your Company Name/CN=WanG Docker Registry CA'

用私钥创建 CA 证书

3. 配置 CA 证书

a. 创建 oot-ca.cnf 文件

使用 vivim 打开文件(没有权限的话命令最前面加上 sudo )

vi root-ca.cnf

b. 保存配置

vim 中输入以下内容(:wq)保存

[root_ca]
basicConstraints = critical,CA:TRUE,pathlen:1
keyUsage = critical, nonRepudiation, cRLSign, keyCertSign
subjectKeyIdentifier=hash

配置 CA 证书

4. 签发 CA 证书

使用刚才生成的 秘钥配置 签发 CA证书

openssl x509 -req  -days 3650  -in "root-ca.csr" \
               -signkey "root-ca.key" -sha256 -out "root-ca.crt" \
               -extfile "root-ca.cnf" -extensions \
               root_ca

签发 CA 证书

ssl 站点证书

5. 生成站点的 ssl 私钥

openssl genrsa -out "docker.wang.key" 4096

生成站点的 ssl 私钥

6. 用私钥创建 ssl 证书

openssl req -new -key "docker.wang.key" -out "site.csr" -sha256 \
          -subj '/C=CN/ST=GuangDong/L=ShenZhen/O=WanG/CN=docker.wang'

用私钥创建 ssl 证书

7. 配置 ssl 证书

a. 创建 site.cnf 文件

vi site.cnf

b. 保存配置

[server]
authorityKeyIdentifier=keyid,issuer
basicConstraints = critical,CA:FALSE
extendedKeyUsage=serverAuth
keyUsage = critical, digitalSignature, keyEncipherment
subjectAltName = DNS:docker.wang, IP:127.0.0.1
subjectKeyIdentifier=hash

配置 ssl 证书

8. 签发 ssl 证书

openssl x509 -req -days 750 -in "site.csr" -sha256 \
    -CA "root-ca.crt" -CAkey "root-ca.key"  -CAcreateserial \
    -out "docker.wang.crt" -extfile "site.cnf" -extensions server

签发 ssl 证书

  • OpenSSL
    7 引用 • 1 回帖
  • 安全

    安全永远都不是一个小问题。

    199 引用 • 816 回帖 • 1 关注
  • 证书
    11 引用 • 41 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...