如何导出PEM格式的证书?

How to export certificate in PEM format?

我有一个 Ubuntu LDAP 服务器,STARTTLS 使用自签名证书(遵循 these instructions)。

在设置 CentOS 客户端时(在 these instructions 之后),authconfig-tui 命令要求我提供 PEM 格式的证书:

│ 使用 TLS 连接到 LDAP 服务器 │
│ 启用协议需要CA证书 │
│ 签署了您的服务器证书。 │
│ 将PEM格式的证书复制到│
│ '/etc/openldap/cacerts' 目录。 │
│ 然后按确定。 │

如何获取 PEM 格式的证书?我找到了这些命令,但是 /etc/dirsrv/ 文件夹在我的 ubuntu 系统上什至不存在。

certutil -L -d /etc/dirsrv/slapd-SOMETHING
certutil -L -d /etc/dirsrv/slapd-SOMETHING -n "SOMETHING_ELSE" -a > cacert.asc

我也看到了命令 certutil -L -d /etc/openldap/certs,它给了我这个错误信息(我也试过 /etc/ssl/certs):

certutil: function failed: SEC_ERROR_LEGACY_DATABASE: certificate/key 数据库是旧的、不受支持的格式。

请注意,出于显而易见的原因,我只想导出证书的 public 部分,而不是私有部分(用于易于识别的 SSH 密钥,其中 id_rsa是私有的而id_rsa.pub是public,我总是很难知道我导出的证书是public还是私有的…)

如果您按照链接到的说明进行操作,那么您已经获得了 PEM 格式的证书。来自这些说明:

Create the self-signed CA certificate:

sudo certtool --generate-self-signed \
   --load-privkey /etc/ssl/private/cakey.pem \ 
   --template /etc/ssl/ca.info \
   --outfile /etc/ssl/certs/cacert.pem

证书是/etc/ssl/certs/cacert.pem并且是PEM格式。

...I would like to export only the public part of the certificate, not the private part

证书 (cacert.pem) 仅包含 public 密钥。私钥 (cakey.pem) 不包含在证书中。