如何信任自签 CA 证书

发布时间: 更新时间: 总字数:1166 阅读时间:3m 作者: IP上海 分享 网址

如何信任自签 CA 证书

原理

证书中X509v3 extensionsX509v3 Authority Key Identifier必须与CA keyid一致才能正常验证证书。

openssl x509 -in all.xiexianbin.cn.crt -text -noout
...
        X509v3 extensions:
            X509v3 Authority Key Identifier:
                keyid:A3:AA:4D:FB:39:BC:15:59:68:F6:3A:D0:DE:10:2A:10:4C:F9:8F:6B

            X509v3 Basic Constraints:
                CA:FALSE
            X509v3 Key Usage:
                Digital Signature, Non Repudiation, Key Encipherment, Data Encipherment
            X509v3 Subject Alternative Name:
                DNS:xiexianbin.cn, DNS:*.xiexianbin.cn, DNS:kb.cx, DNS:*.kb.cx
...
  • 在线查看证书方法
openssl s_client -showcerts -servername xiexianbin.cn -connect xiexianbin.cn:443
openssl s_client -showcerts -connect xiexianbin.cn:443

Windows

信任CA证书

  1. 证书页面导出操作

点击详细信息 -> 复制到文件(C)... -> 下一步 -> 在证书导出向导选择DER编码二进制X.509(.CER(D)) -> 下一步 -> 确认浏览证书导出位置 -> 下一步 -> 完成

  1. 安装证书

右键上一步导出的证书文件 -> 选择存储位置(推荐本地计算机) -> 下一步后,选择将所有的证书都放入夏磊存储 -> 浏览选择受信任的证书颁发机构 -> 下一步 -> 完成

查看本地CA证书

ssl 在网站中越来越普及,那如何查找ssl的根证书呢?

打开证书管理器

开始运行中输入certmgr.msc

选择受信任的根证书颁发机构,可以看到右边列表中显示出本机的所有受信任的根证书信息。

导出

证书

Mac信任CA证书

  • 通过钥匙串导入

打开钥匙串访问,左侧钥匙串选择系统种类选择证书,然后把刚才生成的根证书托入(根证书是cacert.crt)。

双击此证书,在信任设置中,选择始终信任

访问效果:

  • 通过命令行导入
  1. 直接将证书图片拖拉至桌面即可导出证书文件
  2. 双击导入并在钥匙串访问设置中信任该证书,或直接使用下列命令行导入
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain <导出证书文件夹的路径及文件名>

Linux信任CA证书

curl工具可以在linux上模拟发送请求,但当它去访问https加密网站时就会提示如下信息:

# curl https://www.xiexianbin.cn/
curl: (60) Peer certificate cannot be authenticated with known CA certificates
More details here: http://curl.haxx.se/docs/sslcerts.html
curl performs SSL certificate verification by default, using a "bundle"
 of Certificate Authority (CA) public keys (CA certs). If the default
 bundle file isn't adequate, you can specify an alternate file
 using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
 the bundle, the certificate verification probably failed due to a
 problem with the certificate (it might be expired, or the name might
 not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use
 the -k (or --insecure) option.

CentOS/Redhat

# pem 转 cert
openssl x509 -in cacert.crt -inform PEM -out cacert.crt

# install tools
yum install -y ca-certificates

# 将cacert.crt根证书到/etc/pki/ca-trust/source/anchors目录中
update-ca-trust

Ubuntu

Ubuntu 安装 CA 证书

  • 浏览器,以 chrome 为例,打开 chrome chrome://settings/certificatesAuthorities/授权机构 页面点击 Import/导入 自签发的 CA 证书
  • 系统安装 CA
$ apt install -y ca-certificates

# 添加证书
$ cp ca.crt /usr/local/share/ca-certificates
$ update-ca-certificates

# 删除证书
$ rm /usr/local/share/ca-certificates/ca.crt
$ update-ca-certificates

Java信任其他CA证书

  • 准备证书:通过浏览器下载“中级证书颁发机构”的证书,采用如下方法转化为pem格式
  • 转化为pem
openssl x509 -inform der -in Lets-Encrypt-Authority-X3.cer -out Lets-Encrypt-Authority-X3.pem
  • 将证书添加到java
# wget https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem
keytool -trustcacerts -keystore "<$JAVA_HOME>/lib/security/cacerts" -storepass changeit -noprompt -importcert -alias lets-encrypt-x3-cross-signed -file "/tmp/lets-encrypt-x3-cross-signed.pem"

其他方式自签证书信任方法

证书签发

openssl req -x509 -days 365 -out ./cert/all.xiexianbin.cn.crt -keyout ./cert/all.xiexianbin.cn.key \
    -newkey rsa:2048 -nodes -sha256 \
    -subj "/CN=*.xiexianbin.cn" -extensions EXT -config <( \
    printf "[dn]\nCN=*.xiexianbin.cn\n[req]\ndistinguished_name = dn\n[EXT]\nsubjectAltName=DNS:*.xiexianbin.cn\nkeyUsage=digitalSignature\nextendedKeyUsage=serverAuth")

该方式生成的证书中X509v3 extensions没有X509v3 Authority Key Identifier信息

openssl x509 -in all.xiexianbin.cn.crt -text -noout
...
        X509v3 extensions:
            X509v3 Subject Alternative Name:
                DNS:*.xiexianbin.cn
            X509v3 Key Usage:
                Digital Signature
            X509v3 Extended Key Usage:
                TLS Web Server Authentication
...

证书查看

chrome浏览器上,点击左上角的惊叹号区块,再出现的菜单栏中点击证书(无效)

Home Archives Categories Tags Statistics
本文总阅读量 次 本站总访问量 次 本站总访客数