{{< details >}}
- Tier: 基础版,专业版,旗舰版
- Offering: 私有化部署
{{< /details >}}
极狐GitLab 发送的通知邮件可以使用 S/MIME 签名以提高安全性。
请注意,S/MIME 证书和 TLS/SSL 证书不是同一种东西,用于不同的目的:TLS 创建一个安全的通道,而 S/MIME 签名和/或加密消息本身。
启用 S/MIME 签名
此设置必须明确启用,并且必须提供一对密钥和证书文件:
- 两个文件都必须是 PEM 编码的。
- 密钥文件必须是未加密的,以便极狐GitLab 可以在无需用户干预的情况下读取它。
- 仅支持 RSA 密钥。
您还可以选择提供一个 CA 证书包(PEM 编码)以包含在每个签名中。通常这是一个中级 CA。
{{< alert type=”warning” >}}
注意您私钥的访问级别和第三方的可见性。
{{< /alert >}}
对于 Linux 软件包安装:
-
编辑
/etc/gitlab/gitlab.rb
并调整文件路径:gitlab_rails['gitlab_email_smime_enabled'] = true gitlab_rails['gitlab_email_smime_key_file'] = '/etc/gitlab/ssl/gitlab_smime.key' gitlab_rails['gitlab_email_smime_cert_file'] = '/etc/gitlab/ssl/gitlab_smime.crt' # Optional gitlab_rails['gitlab_email_smime_ca_certs_file'] = '/etc/gitlab/ssl/gitlab_smime_cas.crt'
-
保存文件并重新配置极狐GitLab以使更改生效。
密钥必须由极狐GitLab 系统用户(默认为 git
)可读。
对于自编译安装:
-
编辑
config/gitlab.yml
:email_smime: # Uncomment and set to true if you need to enable email S/MIME signing (default: false) enabled: true # S/MIME private key file in PEM format, unencrypted # Default is '.gitlab_smime_key' relative to Rails.root (the root of the GitLab app). key_file: /etc/pki/smime/private/gitlab.key # S/MIME public certificate key in PEM format, will be attached to signed messages # Default is '.gitlab_smime_cert' relative to Rails.root (the root of the GitLab app). cert_file: /etc/pki/smime/certs/gitlab.crt # S/MIME extra CA public certificates in PEM format, will be attached to signed messages # Optional ca_certs_file: /etc/pki/smime/certs/gitlab_cas.crt
-
保存文件并重新启动极狐GitLab以使更改生效。
密钥必须由极狐GitLab 系统用户(默认为 git
)可读。
如何将 S/MIME PKCS #12 格式转换为 PEM 编码
通常,S/MIME 证书以二进制公钥加密标准 (PKCS) #12 格式处理(.pfx
或 .p12
扩展名),该格式在单个加密文件中包含以下内容:
- 公共证书
- 中级证书(如果有)
- 私钥
要从 PKCS #12 文件中导出所需的 PEM 编码文件,可以使用 openssl
命令:
#-- Extract private key in PEM encoding (no password, unencrypted)
$ openssl pkcs12 -in gitlab.p12 -nocerts -nodes -out gitlab.key
#-- Extract certificates in PEM encoding (full certs chain including CA)
$ openssl pkcs12 -in gitlab.p12 -nokeys -out gitlab.crt