Linux サーバー

circle-info

この機能にはバージョン 2.3.689 以上が必要です。

circle-exclamation

他の SCEPman のユースケースでは、ユーザーを対話的に認証し、その後はそのアカウントまたはデバイス用のユーザー証明書のみを登録できるようにしますが、任意の主体に対して非対話的に証明書を登録できるようにしたい場合があります。

これを実現するには、サービス プリンシパルを認証し、それに SCEPman の Enrollment REST API を利用させることができます。

前提条件

認証に使用できるサービス プリンシパルの作成方法については、API Enrollment の記事を参照してください:

API 登録chevron-right

Powershell モジュール SCEPmanClient

初回要求

Linux サーバーで証明書を要求するには、SCEPmanClient の PowerShell モジュールを使用できます:

$Parameters = @{
    'Url'              = 'scepman.contoso.com'
    'ClientId'         = '569fbf51-aa63-4b5c-8b26-ebbcfcde2715'
    'TenantId'         = '8aa3123d-e76c-42e2-ba3c-190cabbec531'
    'ClientSecret'     = 'csa8Q~aVaWCLZTzswIBGvhxUiEvhptuqEyJugb70'
    'Subject'          = 'CN=LinuxServer'
    'IP'               = '10.22.11.8'
    'ExtendedKeyUsage' = 'ServerAuth'
    'SaveToFolder'     = '/etc/ssl/scepman'
    'IncludeRootCA'    = $true
}

New-SCEPmanCertificate @Parameters

証明書の更新

PowerShell モジュールを使用して、既存の証明書を更新することもできます。これにより、認証にサービス プリンシパルを使用する必要もなくなります:

登録および更新スクリプト

PowerShell モジュールを使用できない場合は、 enrollrenewcertificate.sharrow-up-right スクリプトを使用して、最初に証明書を取得し、さらにそれを検証して、有効期限が近い場合に更新を試みることができます。

クライアントの前提条件

例:

1. コマンド

スクリプトの動作を定義します

このユースケースでは、次のオプションを使用できます:

-s サーバー証明書用。初回登録か更新かを自動検出します

-y サーバー証明書の初回登録用

-c 既存の証明書署名要求を送信するため

クライアント認証のユースケースについては、以下を参照してください:

管理対象外の Linux クライアントchevron-right

2. App Service URL

SCEPman アプリ サービスの URL です。

例: "https://scepman.contoso.net/"

3. API スコープ

これは アプリケーション ID URISCEPman-api アプリ登録で作成できる API スコープです。

例: "api://a7a1d6c8-51b9-48ec-9ca0-a363dc2c8436"

4. 証明書ファイル名

作成または更新用に読み取られる証明書のファイル名(拡張子なし)です。

例: "myCertificate"

5. 証明書ディレクトリ

証明書が作成される、または更新が試みられるディレクトリです。

例: ~/certs/

8. 更新しきい値

スクリプトが更新処理を開始するために、証明書の有効期限が切れるまでの残り日数です。

例: 30

サーバー証明書の追加パラメーター:

9. サービス プリンシパル クライアント ID

認証したいアプリ登録のアプリケーション (クライアント) ID。

10. サービス プリンシパル クライアント シークレット

認証したいアプリ登録で作成されたクライアント シークレット。

11. サービス プリンシパル テナント ID

アプリ登録のテナント ID。

12. 証明書サブジェクト

証明書を登録したいサブジェクト。

形式: /CN=SubjectName,O=Organization

13. 証明書拡張

これはサブジェクトの別名として追加されます

例: DNS:webserver.contoso.com

CSR 署名の使用例 (-c コマンド)

考慮事項

  • このスクリプトは生成されたキーを暗号化しません(これにはパスフレーズの入力が必要なため、自動更新を可能にするため暗号化は省略されています)。

  • Certificate Master からパスフレーズ保護された証明書を更新する場合は、更新のためにこのパスフレーズを入力する必要があります。

自動更新の設定

上記の bash スクリプトを実行して証明書がすでに登録済みであることを検出すると、mTLS を使用して証明書を更新します(有効期限が近い場合)。スクリプトを定期的に実行すれば、有効期限が近づいたときに証明書が更新されることを保証できます。これを実現するために cronjob を設定できます。以下のコマンドは、その一例です。システムの電源が入っている場合に毎日コマンドを実行する cronjob と、再起動時にコマンドを実行する cronjob を設定します。

Cron によって実行されるコマンドは、スクリプト/証明書が存在するディレクトリから実行されるとは限らないため、スクリプト/証明書への絶対パスを指定することが重要です。

最終更新

役に立ちましたか?