# 管理されていない Linux クライアント

{% hint style="info" %}
SCEPman バージョン 2.9 以上に適用されます
{% endhint %}

{% hint style="warning" %}
SCEPman Enterprise Edition のみ
{% endhint %}

この方法は、管理されていない、または Intune 以外の MDM によって管理されているユーザーおよびデバイスの証明書を登録するために使用できます。

## 前提条件

### 1. セルフサービス登録

### 2. アプリ サービス設定

このシナリオは、タイプの証明書を登録します ***IntuneUser。***

## Powershell モジュール SCEPmanClient

### 初期リクエスト

Linux デバイスで証明書を要求するために SCEPmanClient PowerShell モジュールを使用できます：

```powershell
New-SCEPmanCertificate -Url 'scepman.contoso.com' -SubjectFromUserContext -SaveToFolder '~/certs/'
```

その後、ユーザーはブラウザーセッションで対話的にサインインする必要があり、ログインしているアカウントの証明書が作成されます。

### 証明書の更新

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

```powershell
$Parameters = @{
    'CertificateFromFile' = '~/certs/john.doe@contoso.com.pem'
    'KeyFromFile'         = '~/certs/john.doe@contoso.com.key'
    'SaveToFolder'        = '~/certs/'
}

New-SCEPmanCertificate @Parameters
```

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

PowerShell モジュールが利用できない場合は、 [enrollrenewcertificate.sh](https://github.com/scepman/csr-request/blob/main/enroll-certificate/enrollrenewcertificate.sh) スクリプトを使用して、最初に証明書を取得したり、それを検証して、有効期限が近い場合に更新を試みることができます。

### **クライアント前提条件**

例：

{% code overflow="wrap" %}

```bash
./enrollrenewcertificate.sh -u https://scepman.contoso.net/ api://b7d17d51-8b6d-45eb-b42b-3dae638cd5bc/Cert.Enroll ~/certs/ "myCertificate" "myKey" 30
```

{% endcode %}

#### 1. コマンド

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

次のいずれかにできます：

**-u** 初回登録か更新かを自動検出するユーザー証明書用

**-d** 初回登録か更新かを自動検出するデバイス証明書用

**-r** 更新用

**-w** ユーザーの初回登録用

**-x** デバイスの初回登録用

{% hint style="warning" %}
デバイス証明書を登録または更新する場合、DeviceId はデフォルトで次から読み取られようとします *\~/.config/intune/registration.toml* および認証されたユーザーは構成されているオブジェクトの所有者と一致する必要があります [DeviceDirectory](https://docs.scepman.com/advanced-configuration/application-settings/intune-validation#appconfig-intunevalidation-devicedirectory)
{% endhint %}

#### 2. アプリ サービス URL

SCEPman アプリ サービスの URL。

*例: "<https://scepman.contoso.net/>"*

#### 3. API\_SCOPE

これは、環境のアプリ登録で作成できる API スコープです。 ***SCEPman-api*** アプリ登録で作成できます。

ユーザーには希望する同意ダイアログが表示され、以降セルフサービス機能を使用できるようになります。

*例: "api://*&#x62;7d17d51-8b6d-45eb-b42b-3dae638cd5bc/Cert.Enrol&#x6C;*"*

<figure><img src="https://114237723-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LoGejQeUQcw7lqnQ3WX%2Fuploads%2FKWdXwi8JnKGy27tU384e%2Fimage.png?alt=media&#x26;token=5173dc4b-8981-40e9-8875-e932078c6667" alt=""><figcaption></figcaption></figure>

#### 4. 証明書ディレクトリ

証明書が作成されるか、更新のために読み取られようとするディレクトリ。

*例: \~/certs/*

#### 5. 証明書ファイル名

作成されるか、更新のために読み取られる証明書のファイル名（拡張子なし）。

*例: "myCertificate"*

#### 6. 秘密鍵ファイル名

作成されるか、更新のために読み取られる秘密鍵のファイル名。

*例: "myKey"*

#### 7. 更新しきい値

スクリプトが更新プロセスを開始するために、証明書の有効期限が残っている必要がある日数。

*例: 30*

### 考慮事項

* このスクリプトは生成された鍵を暗号化しません（パスフレーズ入力が必要なため、自動更新を可能にするために暗号化は省略されています）。
* Certificate Master からパスフレーズ保護された証明書を更新する場合、それらを更新するにはこのパスフレーズを入力する必要があります。

## 自動更新の設定

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

<pre data-overflow="wrap"><code><strong>(crontab -l ; echo @daily /path/to/enrollrenewcertificate.sh -u https://scepman.contoso.net/ api://b7d17d51-8b6d-45eb-b42b-3dae638cd5bc/Cert.Enroll /home/user/certs/ "myCertificate" "myKeyName" 30 ; echo @reboot /path/to/enrollrenewcertificate.sh -u https://scepman.contoso.net/ api://b7d17d51-8b6d-45eb-b42b-3dae638cd5bc/Cert.Enroll /home/user/certs/ "myCertificate" "myKeyName" 30 ) | crontab -
</strong></code></pre>

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