いざ、Outlook on the web でS/MIMEを導入しようとした際のメモ・はまりどころなど。
S/MIME証明書の取得
今回は、初年度無料のActalis社の証明書を使用しました。
翌年以降も6ユーロなので、S/MIME証明書にしてはかなり割安です。
https://www.actalis.com/
S/MIME証明書のインストール
S/MIME証明書の取得が完了したら、pemファイルをダブルクリックし、Windowsの証明書ストアにインストールします。
この時、「エクスポート可能」としてインストールしておくと、後ほどスマートフォン(Outlook for iOS)等で利用する際のpfxファイルをエクスポート可能になります。
ルート証明書・中間証明書をSSTとして抽出
Actalis社のサイトを探しましたが、ルート証明書・中間証明書をきちんと配っているページが見つかりませんでした。
仕方ないので、pemファイルから抜き出すことにします。
証明書の拇印は、コントロールパネル「ユーザ証明書の管理」で証明書をダブルクリックし、詳細を開いた後
詳細タブ→一番下の「拇印」の欄で確認が可能です。
$thumb = "証明書の拇印をすべて大文字にしたもの"
$leaf = Get-Item "cert:\CurrentUser\My\$thumb"
$chain = New-Object System.Security.Cryptography.X509Certificates.X509Chain
$null = $chain.Build($leaf)
$collection = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2Collection
foreach ($el in $chain.ChainElements) {
# 葉(自分の証明書)は除外して、中間・ルートだけ入れる
if ($el.Certificate.Subject -ne $leaf.Subject) {
$collection.Add($el.Certificate)
}
}
$bytes = $collection.Export([System.Security.Cryptography.X509Certificates.X509ContentType]::SerializedStore)
$outPath = "C:\保存先パス.sst"
[System.IO.File]::WriteAllBytes($outPath, $bytes)
Exchange Online PowerShellのインストール
Exchange Online PowerShellが未インストールの場合、以下をPowerShell 5.1以降で実行してインストール・有効化します。
Install-Module -Name ExchangeOnlineManagement
Import-Module ExchangeOnlineManagement
Connect-ExchangeOnline
Exchange Onlineにルート証明書・中間証明書を登録
Exchange Online Powershellが有効な状態で以下のコマンドを実行し、先ほど作成したSSTをExchange Onlineに登録します。
Set-SmimeConfig -SMIMECertificateIssuingCA ([System.IO.File]::ReadAllBytes('C:\保存先パス.sst'))
詳細:
https://learn.microsoft.com/ja-jp/exchange/security-and-compliance/smime-exo/configure-smime-exo
S/MIME 拡張をIntuneで配布
EdgeとChromeのS/MIME 拡張をIntuneで配布します。
Intuneの設定カタログポリシーを作成し、
「Configure the list of force-installed apps and extensions
」と
「Control which extensions are installed silently」
を有効化します。
さらに、
「Extension/App IDs and update URLs to be silently installed (Device)」と
「拡張子 ID/アプリ ID と、サイレント インストールされる更新 URL」に
「maafgiompdekodanheihhgilkjchcakm;https://outlook.office.com/owa/SmimeCrxUpdate.ashx」
を設定します。
S/MIME 拡張の更新設定
S/MIME 拡張の更新を構成するため、さらに「ExtensionSetting」で検索し、
Chromeの「Extension management settings」と
Edgeの「Configure extension management settings」
を追加、有効にします

さらに、それぞれに以下のJSONを設定します。
{
"maafgiompdekodanheihhgilkjchcakm": {
"override_update_url": 1
}
}
詳細:
https://learn.microsoft.com/ja-jp/exchange/policy-and-compliance/smime/smime-settings-for-owa
S/MIME 拡張の設定で独自ドメインを有効化する
https://outlook.office.com/ をそのまま利用している場合は不要ですが、
独自ドメインを利用している場合、拡張機能のオプションから独自ドメインの許可を追加します。
S/MIME コントロールのインストール
Outlook on the webで設定→メール→S/MIME の順にたどると
「インストールするには、ここをクリックしてください」と表示があります。
ここからS/MIME コントロールをダウンロードし、インストールしてください。
配布を自動化する場合、IntuneWinAppUtil.exeでmsiをパッケージしてIntuneにアップします。
https://learn.microsoft.com/ja-jp/intune/intune-service/apps/apps-win32-prepare
Intune管理下におけるEdgeでOutlook for Web Apps (OWA) の S/MIME コントロールが使えない問題
この問題が一番厄介でした。
Intune管理下のEdgeにて、何度試してもOutlook on the Web( https://outlook.office.com/ )がS/MIME コントロールを認識しなかった問題が発生しました。
試しにGoogle Chromeをインストールしてみると、そちらではS/MIME付きメールの送信・受信ともに問題なく、Edge特有の問題と切り分けできました。
切り分けを進めたところ、エンドポイントセキュリティとして導入した「Microsoft Edgeのセキュリティ ベースライン」の構成の一つが原因と判明しました。

構成の詳細のいくつかを有効・無効にしてさらに切り分けを進めたところ、
S/MIME コントロールが「ネイティブメッセージング」の機能を利用していることが判明しました。
「Allow user-level native messaging hosts (installed without admin permissions)」を有効にすることで、無事S/MIME コントロールを利用したOutoook on the webの機能が動作するようになりました。

メール送信時のS/MIME署名の有効化
S/MIME コントロールが認識されると、
Outlook on the webの設定→メール→S/MIME で「すべての送信メッセージにデジタル署名を追加する」が選択できるようになります。
こちらを有効にすると、自動でS/MIME署名付きでメールが送信されるようになります。
Outlook for iOS / Android, iOS標準メールでもS/MIMEを使用する
コントロールパネルの「ユーザー証明書の管理」で、該当の証明書を右クリック、
すべてのタスクからエクスポートを選びます。

はい、秘密キーをエクスポートします。を必ず選んでください。
形式は必ずPFX形式を選んでください。
生成したPFXファイルを、メールに添付して自分自身宛に送ってください。
Outlook for iOS / Androidや、iOS標準メールソフトでは、
受信したメールの添付ファイルのPFXファイルを開くと、S/MIME証明書のインストール画面に移ります。
その後、各アプリのアカウントの設定から、S/MIME署名や暗号化の有効・無効が切り替えられるようになります。







