正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

S/MIMEで送信メールに署名する

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab Self-Managed

GitLabから送信される通知メールは、セキュリティ向上のためS/MIMEで署名できます。

S/MIME証明書とTLS/SSL証明書は同じではなく、異なる目的に使用されることに注意してください: TLSはセキュアなチャンネルを作成しますが、S/MIMEはメッセージ自体に署名または暗号化されたを行います。

S/MIME署名を有効にする

この設定は明示的に有効にする必要があり、キーと証明書ファイルの単一のペアを提供する必要があります:

  • 両方のファイルがPEMエンコードされている必要があります。
  • キーファイルは、GitLabがユーザーの操作なしに読み取りできるように、暗号化されていない必要があります。
  • RSAキーのみがサポートされています。

オプションで、各署名に含める認証局証明書のバンドル(PEMエンコード)を提供することもできます。これは通常、中間認証局です。

プライベートキーのアクセスレベルと、サードパーティへの表示レベルに注意してください。

Linuxパッケージインストールの場合:

  1. /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'
  2. ファイルを保存して、GitLabを再設定し、変更を有効にします。

キーは、GitLabシステムユーザー(gitがデフォルト)が読み取り可能である必要があります。

自己コンパイルによるインストールの場合:

  1. 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
  2. ファイルを保存して、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