跳至主要內容

自签名 SSL 证书

逸尘.Lycodx大约 3 分钟后端ssltls

自签名 SSL 证书

一、openssl命令生成

1、生成私钥

生成2048位的RSA私钥,并作为CA私钥

# private_cakey.key为生成的私钥文件名,支持自定义
openssl genrsa -out private_cakey.key 2048

2、颁发证书

自己作为数字证书颁发机构,自己颁发数字证书

# -days 365是证书的有效期,cacert.pem是证书的文件名称支持自定义
openssl req -new -x509 -days 365 -key private_cakey.key -out cacert.crt

3、使用

自签名的证书和正规购买的证书使用没什么差别,配置nginx或者自己代码里配置即可。

使用之后浏览器还是会认为是不安全的,因为不是正规CA机构签发的。

Windows系统直接点击高级,继续访问就行了

Mac系统的chrome浏览器没有高级选项,直接对着键盘输入thisisunsafe即可访问

二、使用cfssl自签证书

该方法多用于k8s上签发证书,cfssl是需要安装的

下载地址:https://github.com/cloudflare/cfssl/releasesopen in new window

1、安装cfssl

需要下载cfssl_linux-amd64 cfssljson_linux-amd64 cfssl-certinfo_linux-amd64 这三个文件

# 下载
wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64
wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64
wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64
# 添加执行权限
chmod +x cfssl_linux-amd64 cfssljson_linux-amd64 cfssl-certinfo_linux-amd64
# 移动到 /usr/bin 目录下 (这里是放在/usr/bin下很多博客说放在/usr/local/bin下,我试了不行)
mv cfssl_linux-amd64 /usr/bin/cfssl
mv cfssljson_linux-amd64 /usr/bin/cfssljson
mv cfssl-certinfo_linux-amd64 /usr/bin/cfssl-certinfo
# 检查安装情况
cfssl version
# 出现如下版本信息
Version: 1.2.0
Revision: dev
Runtime: go1.6

2、 初始化ca-csr.json

cfssl print-defaults csr > ca-csr.json

修改json文件,内容如下:

{
    "CN": "demo", 
    "hosts": [
        "127.0.0.1", 
        "*.necc.xyz"
    ], 
    "key": {
        "algo": "rsa", 
        "size": 2048
    }, 
    "names": [
        {
            "C": "CN", 
            "ST": "guangdong", 
            "L": "shenzhen", 
            "O": "pibao", 
            "OU": "jishu"
        }
    ]
}

字段解释:

  • CN:Common Name,浏览器使用该字段验证网站是否合法,一般写的是域名。非常重要。浏览器使用该字段验证网站是否合法
  • hosts: 主机名(域名)或者IP可以使用此csr申请的证书
  • key:生成证书的算法
  • names:基本信息
    • C :国家
    • ST:省份
    • L:地区、城市
    • O:公司
    • OU:部门

3、 生成CA证书和CA私钥和CSR

cfssl gencert -initca ca-csr.json | cfssljson -bare ca

执行完毕后会生成如下几个文件,就可以之间使用了

-rw-r--r-- 1 root root 1005 Jun 26 09:47 ca.csr
-rw-r--r-- 1 root root  210 Jun 26 09:45 ca-csr.json
-rw------- 1 root root 1675 Jun 26 09:47 ca-key.pem
-rw-r--r-- 1 root root 1363 Jun 26 09:47 ca.pem

其他命令

# 使用现有私钥, 重新生成
cfssl gencert -initca -ca-key key.pem ca-csr.json | cfssljson -bare ca
# 查看cert(证书信息)
cfssl certinfo -cert ca.pem
# 查看CSR(证书签名请求)信息
cfssl certinfo -csr ca.csr

如果需要签发其他证书,就把ca-csr.json复制一份,比如:cp ca-csr.json demo-csr.json,然后修改对于的内容,最后执行cfssl gencert -initca demo-csr.json | cfssljson -bare demo即可

友情链接open in new window

上次编辑于: