S/MIMEによる送信メールの署名
GitLabから送信される通知メールには、セキュリティを向上させるためにS/MIMEで署名することができます。
S/MIME証明書とTLS/SSL証明書は同じではなく、異なる目的で使用されることに注意してください:TLSはセキュリティチャンネルを作るのに対し、S/MIMEはメッセージ自体に署名したり暗号化したりします。
S/MIME署名を有効にします
この設定は明示的に有効にし、鍵と証明書のペアのファイルを1つ提供する必要があります:
- どちらのファイルも PEM エンコードされている必要があります。
- GitLabがユーザーの介入なしに読み込めるように、鍵ファイルは暗号化されていないものでなければなりません。
- RSA鍵のみがサポートされています。
オプションとして、各署名に含まれるCA証明書のバンドル(PEMエンコード)を提供することもできます。これは通常、中間CAです。
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 (i.e. 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 (i.e. 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
拡張子) で扱われ、1 つの暗号化されたファイルに以下の内容が含まれます:
- 公開証明書
- 中間証明書(ある場合)
- 秘密鍵
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