IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 【docker login报错】x509: cannot validate certificate for IP地址 because it does not contain any IP SANs -> 正文阅读

[网络协议]【docker login报错】x509: cannot validate certificate for IP地址 because it does not contain any IP SANs

原因

如果服务器名称是 IP 地址,还会检查证书的Subject Alternative Name(SAN),因此需要创建一个包含此名称的证书。
否则,docker login 时会报如下错误:

Error response from daemon: Get https://x.x.x.x/v2/: x509: cannot validate certificate for x.x.x.x because it doesn't contain any IP SANs

解决方法

在证书中生成x509v3 Extensions。要将?extensions?添加到证书中,需要在签署证书时使用“-extensions”选项。

例:

#openssl ca -policy policy_anything -config  -out windows_server.crt -extensions some_ext -extfile some_extensions.txt -infiles cert_request.csr

重点在于【-extensions some_ext -extfile some_extensions.txt】这句。且前提是,已经在同一目录下创建了一个名为“some_extensions.txt”的文件,并且它具有 some_ext 扩展名。

为了实现自动化,可以在shell中写入如下代码,让其自动执行。

要点如下:

  • 本次需要的extensions类型是"v3_ca",内容是"subjectAltName = IP:ip地址",需要在生成csr之前作成此文件。
  • 在生成crt的语句中,需要加入"-extensions v3_ca -extfile /etc/cert/extfile.cnf"。
#!/bin/sh

if [ ! -d /etc/cert ] ; then
  mkdir -p /etc/cert
  touch /etc/cert/extfile.cnf
  cat>/etc/cert/extfile.cnf<<EOF
  [v3_ca]
  subjectAltName = IP:ip地址
EOF
fi

echo "Create Private Key....."
...(略)
echo "Create Certificate Sigining Request....."
...(略)
echo "Create Certificate....."
...(前略) -extensions v3_ca -extfile /etc/cert/extfile.cnf
echo "Done."

签署证书后,检查扩展是否正确添加。

#openssl x509 -text -noout -in user-certificate.crt

...(略)
        X509v3 extensions:
            X509v3 Subject Alternative Name:
                IP Address:ip地址
...(略)

参考

构建docker私有仓库

当服务器名是IP地址时创建SSL证书

How to generate x509v3 Extensions in the End user certificate

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-05-12 16:42:19  更:2022-05-12 16:42:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 13:10:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码