• 陪伴互联网运营小白共同探索成长,与IT爱好者共享探索乐趣
  • 建站只为分享,欢迎在PC端文章面打赏支持
  • 使用Ctrl+D 可收藏本站

nextcloud系列:自签名SSL证书支持完整的证书链并信任

好玩有趣 陆子方 2天前 15次浏览 0个评论 扫描二维码
文章目录[隐藏]

前言

当时从日志中,一直看到提示证书错误,觉得是网络直接生成的自签名IP ssl证书不够完整,因此产生了配置完整证书链的研究。不过最终的结果证明,其实不用这么复杂,直接签署一个简单的ssl,禁用验证即可,详见此前发布的文章。

创建自签名的根证书 (CA)

创建自签名的根证书 (CA)
sudo openssl genrsa -out /etc/nginx/ssl/rootCA.key 4096

生成根证书(有效期 10 年,可调整)
sudo openssl req -x509 -new -nodes -key /etc/nginx/ssl/rootCA.key -sha256 -days 3650 -out /etc/nginx/ssl/rootCA.crt \
  -subj "/C=CN/ST=Beijing/L=Beijing/O=MyCompany/OU=IT/CN=MyRootCA"

CN=MyRootCA 是根证书的名称,可自行定义。

创建中间证书

生成中间证书的私钥
sudo openssl genrsa -out /etc/nginx/ssl/intermediate.key 4096

生成中间证书的 CSR(证书签名请求)
sudo openssl req -new -key /etc/nginx/ssl/intermediate.key -out /etc/nginx/ssl/intermediate.csr \
  -subj "/C=CN/ST=Beijing/L=Beijing/O=MyCompany/OU=IT/CN=MyIntermediateCA"

使用根证书对中间证书进行签名
sudo openssl x509 -req -in /etc/nginx/ssl/intermediate.csr -CA /etc/nginx/ssl/rootCA.crt -CAkey /etc/nginx/ssl/rootCA.key -CAcreateserial \
  -out /etc/nginx/ssl/intermediate.crt -days 1825 -sha256

这里的 -days 1825 代表 5 年有效期,你可以自行调整。

创建服务器证书

生成服务器私钥
sudo openssl genrsa -out /etc/nginx/ssl/onlyoffice.key 2048

生成服务器的 CSR
sudo openssl req -new -key /etc/nginx/ssl/onlyoffice.key -out /etc/nginx/ssl/onlyoffice.csr \
  -subj "/C=CN/ST=Beijing/L=Beijing/O=MyCompany/OU=IT/CN=<你的服务器IP或域名>"

使用中间证书签署服务器证书
sudo openssl x509 -req -in /etc/nginx/ssl/onlyoffice.csr -CA /etc/nginx/ssl/intermediate.crt -CAkey /etc/nginx/ssl/intermediate.key -CAcreateserial \
  -out /etc/nginx/ssl/onlyoffice.crt -days 365 -sha256

CN=<你的服务器IP或域名> 需要填你的 服务器 IP 或 域名,否则 SSL 可能报错。

创建完整的证书链

Nginx 需要完整的 证书链文件,将中间证书和服务器证书合并:

sudo cat /etc/nginx/ssl/onlyoffice.crt /etc/nginx/ssl/intermediate.crt > /etc/nginx/ssl/onlyoffice_fullchain.crt

onlyoffice_fullchain.crt 包含 服务器证书 + 中间证书,Nginx 需要这个完整证书。

配置 Nginx

  ## 配置完整的 SSL 证书链
  ssl_certificate /etc/nginx/ssl/onlyoffice_fullchain.crt;
  ssl_certificate_key /etc/nginx/ssl/onlyoffice.key;
  ssl_trusted_certificate /etc/nginx/ssl/rootCA.crt;
  ssl_verify_client off;

在客户端安装根证书

由于这个证书是 自签名的,你需要 在客户端信任根证书,否则会提示 不受信任。rootCA.crt是一定要复制的,另外几个如:intermediate.csr、onlyoffice.csr、onlyoffice_fullchain.crt 共4个可以一起拷贝到/usr/local/share/ca-certificates/文件夹,并通过下面命令安装信任。Windows双击证书即可安装

sudo update-ca-certificates

子方有料原创丨转载请注明原文链接
期待您的评论或捐赠,这是最好的鼓励和支持!
喜欢 (0)
[赞赏使我快乐]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到