閉域EC2にSSMS 22をオフラインインストールしてみた
はじめに
こんにちは、ぐっさんです!
プライベートサブネット(インターネット接続なし)のEC2にSSMS 22(SQL Server Management Studio バージョン22)をインストール検証する機会がありました。
通常はインストーラーを実行するだけで完結しますが、インターネット非接続環境では「インストーラーがコンポーネントをダウンロードできない」という問題があります。今回はレイアウト(オフライン用パッケージ)をS3に格納し、S3 Gateway VPCエンドポイント経由でEC2に転送してインストールする方法をとりました。
なお、オフラインインストールでは証明書の事前準備が重要です。公式ドキュメントに沿って必要な証明書をすべて揃えておくことで、インストールをスムーズに進められます。私は最初この手順を見落として証明書エラーに遭遇したので、本記事ではその経験も踏まえた手順を紹介します。
構成
インターネットに接続できる一時EC2でSSMSのレイアウト(オフライン用パッケージ)を作成し、S3を経由してインターネット非接続のEC2に転送してインストールする構成としています。

前提環境
今回、以下のリソースが既に構築されている前提で設定を進めます。
共通(VPC構成)
| 項目 | 内容 |
|---|---|
| NATゲートウェイ | パブリックサブネットに作成済み |
| S3バケット | パッケージ格納用として作成済み |
| S3 Gateway VPCエンドポイント | VPCに作成済み |
| SSM VPCエンドポイント | com.amazonaws.ap-northeast-1.ssm / com.amazonaws.ap-northeast-1.ssmmessages(Fleet Manager接続用) |
EC2(レイアウト作成用)
| 項目 | 内容 |
|---|---|
| OS | Windows Server 2025 |
| インスタンスタイプ | t3.medium |
| サブネット | プライベートサブネット |
| インターネット接続 | NATゲートウェイ経由 |
| IAMロール | S3書き込み権限あり |
| ストレージ | 30GB |
| AWS CLI v2 | インストール済み |
EC2(オフラインインストール対象)
| 項目 | 内容 |
|---|---|
| OS | Windows Server 2025 |
| インスタンスタイプ | t3.medium |
| サブネット | プライベートサブネット |
| インターネット接続 | なし |
| IAMロール | S3読み取り権限あり |
| ストレージ | 60GB |
| AWS CLI v2 | インストール済み |
プライベートサブネットのEC2へのAWS CLIインストールはこちらの手順を参照してください。
手順
基本的には以下の公式手順をもとにして進めます。
事前準備(ローカルMac)
オフラインEC2で必要なファイルをあらかじめS3にアップロードしておきます。私のローカルPCはMacのため、レイアウト作成コマンド(Windows専用)は一時EC2で実施しています。それ以外のファイルはローカルのMacにダウンロードして準備しました。
Microsoft Windows Code Signing PCA 2024 証明書
以下のページで取得できます。
「Microsoft Windows Code Signing PCA 2024 証明書」 をクリックしてダウンロードし、S3にアップロードします。
aws s3 cp "Microsoft Windows Code Signing PCA 2024.crt" \
"s3://<バケット名>/certs/Microsoft Windows Code Signing PCA 2024.crt" --region ap-northeast-1
Visual C++ 再頒布可能パッケージ(必要に応じて)
インストール済みかどうかは、手順4のコマンドで確認できます。
インストールされていない場合は以下からx86・x64をダウンロードしてS3にアップロードしてください。
aws s3 cp VC_redist.x86.exe s3://<バケット名>/vcredist/VC_redist.x86.exe --region ap-northeast-1
aws s3 cp VC_redist.x64.exe s3://<バケット名>/vcredist/VC_redist.x64.exe --region ap-northeast-1
1. 一時EC2でレイアウトを作成してS3にアップロードする
プライベートサブネットにWindows EC2を一時起動します。私はt3.mediumを使用しました。NATゲートウェイ経由でインターネットにアクセスできる構成であることを確認してください。
Fleet ManagerまたはRDPで接続し、管理者権限のPowerShellで以下を実行します。
- SSMSブートストラップをダウンロード
# SSMSブートストラップをダウンロード
New-Item -ItemType Directory -Path C:\SSMS_Download
Invoke-WebRequest -Uri "https://aka.ms/ssms/22/release/vs_SSMS.exe" -OutFile "C:\SSMS_Download\vs_SSMS.exe"
結果

ファイルエクスプローラーからvs_SSMS.exeが確認できます。

- レイアウトを作成
# レイアウトを作成(コンポーネント一式をダウンロード)
C:\SSMS_Download\vs_SSMS.exe --layout C:\SSMS_Layout --lang ja-JP
--lang ja-JP で日本語のみに絞ることでダウンロードサイズを抑えられます。完了まで数分程度かかります。
ファイルエクスプローラーでレイアウトフォルダが確認できます。

別のシェルが立ち上がり、進捗状況が見えます。

完了すると以下のメッセージが表示されます。
Setup completed successfully.
Send us your feedback on the layout experience: http://aka.ms/vs/setup/layout/feedback
Press any key to continue...
結果

任意のキーを押して画面を閉じます。続けてS3にアップロードします。
aws s3 cp C:\SSMS_Layout s3://<バケット名>/SSMS_Layout/ --recursive --region ap-northeast-1
アップロード後、サイズを確認してみます。
aws s3 ls s3://<バケット名>/SSMS_Layout/ --recursive --human-readable --summarize
私の環境では以下の結果でした。およそ 3 GB ですね。
Total Objects: 459
Total Size: 2.7 GiB
アップロード完了を確認したら、一時 EC2 は停止します。
2. S3からファイルをダウンロードする
Fleet ManagerでオフラインEC2に接続し、PowerShellで実行します。S3 Gateway VPCエンドポイント経由でインターネットを経由せずにダウンロードできます。
# レイアウト
New-Item -ItemType Directory -Path C:\SSMS_Layout
aws s3 cp s3://<バケット名>/SSMS_Layout/ C:\SSMS_Layout\ --recursive --region ap-northeast-1
# 証明書
New-Item -ItemType Directory -Path C:\temp -ErrorAction SilentlyContinue
aws s3 cp "s3://<バケット名>/certs/Microsoft Windows Code Signing PCA 2024.crt" `
"C:\temp\Microsoft Windows Code Signing PCA 2024.crt" --region ap-northeast-1
3. 証明書をインストールする
オフラインインストールの前に証明書のインストールが必要です。管理者PowerShellで実行します。
# レイアウト内の証明書
certutil.exe -addstore -f "Root" "C:\SSMS_Layout\certificates\manifestRootCertificate.cer"
certutil.exe -addstore -f "Root" "C:\SSMS_Layout\certificates\manifestCounterSignRootCertificate.cer"
certutil.exe -addstore -f "Root" "C:\SSMS_Layout\certificates\vs_installer_opc.RootCertificate.cer"
certutil.exe -addstore -f "TrustedPublisher" "C:\SSMS_Layout\certificates\vs_installer_opc.RootCertificate.cer"
# 署名検証用の中間証明書(レイアウトには含まれないため別途追加)
certutil.exe -addstore -f "CA" "C:\temp\Microsoft Windows Code Signing PCA 2024.crt"
各コマンドの実行後に以下のメッセージが表示されれば成功です。
CertUtil: -addstore command completed successfully.
すでに同じ証明書がインストール済みの場合は以下のメッセージが表示されますが、問題ありません。
Certificate "Microsoft Root Certificate Authority 2010" already in store.
4. Visual C++ 再頒布可能パッケージを確認する
オフラインインストールにはMicrosoft Visual C++ 再頒布可能パッケージ(x86・x64)が必要です。コントロールパネルの「プログラムと機能」で確認できます。

PowerShellで確認する場合は以下のコマンドを実行します。Windows Server 2025では以下のとおり既にインストール済みでした。
Get-ItemProperty HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* |
Where-Object { $_.DisplayName -like "*Visual C++*" } |
Select-Object DisplayName, DisplayVersion
DisplayName DisplayVersion
----------- --------------
Microsoft Visual C++ 2022 X86 Minimum Runtime - 14.51.36231 14.51.36231
Microsoft Visual C++ 2015-2022 Redistributable (x86) - 14.51.36231 14.51.36231.0
Microsoft Visual C++ 2015-2022 Redistributable (x64) - 14.51.36231 14.51.36231.0
Microsoft Visual C++ 2022 X86 Additional Runtime - 14.51.36231 14.51.36231
インストールされていない場合はS3からダウンロードして、インストールを実行してください。
# Visual C++ 再頒布可能パッケージ (必要に応じて)
aws s3 cp s3://<バケット名>/vcredist/VC_redist.x86.exe C:\temp\VC_redist.x86.exe --region ap-northeast-1
aws s3 cp s3://<バケット名>/vcredist/VC_redist.x64.exe C:\temp\VC_redist.x64.exe --region ap-northeast-1
C:\temp\VC_redist.x86.exe /install /quiet /norestart
C:\temp\VC_redist.x64.exe /install /quiet /norestart
5. オフラインインストールを実行する
C:\SSMS_Layout\vs_SSMS.exe --noWeb --add Microsoft.Component.HelpViewer --noUpdateInstaller --passive --norestart
| オプション | 説明 |
|---|---|
--noWeb |
インターネットへのアクセスを禁止(オフラインインストールに必須) |
--add Microsoft.Component.HelpViewer |
ヘルプビューワーコンポーネントを追加 |
--noUpdateInstaller |
VSインストーラー自体の自己更新を抑制(インターネット非接続環境でのタイムアウト防止) |
--passive |
プログレスバーを表示(--norestart との併用時に必須) |
--norestart |
インストール後の自動再起動を抑制 |
GUIのインストーラーが立ち上がります。

進捗状況

6. インストール確認
Get-ItemProperty HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* |
Where-Object { $_.DisplayName -like "*SQL Server Management Studio*" } |
Select-Object DisplayName, DisplayVersion
以下のように表示されれば成功です。
DisplayName DisplayVersion
----------- --------------
SQL Server Management Studio 22 22.6.0
検索窓から確認すると、ちゃんとアプリケーションが入っていました。

表示も日本語になっていますね!

7. レイアウトフォルダを削除する
インストール完了後、レイアウトフォルダは不要なので削除できます。
Remove-Item -Path C:\SSMS_Layout -Recurse -Force
ハマりポイント:Microsoft Windows Code Signing PCA 2024 証明書
本記事の手順ではレイアウト内の3証明書に加えて Microsoft Windows Code Signing PCA 2024 を事前にインストールしています。
レイアウトの certificates/ フォルダには含まれていない証明書です。オンライン環境ではWindows APIが自動でダウンロード・インストールしますが、オフライン環境ではそのプロセスが実行できないため手動での事前インストールが必要です。
私は最初この手順を見落として、このエラーを踏んでしまいました。
Certificate is invalid: C:\SSMS_Layout\vs_installer.opc
Error: Unable to verify the certificate: InvalidCertificate
Error 0x80131509: Signature verification failed.
詳細は公式ドキュメントを参照してください。
まとめ
公式ドキュメントの記載を読み飛ばしてしまったために証明書で手こずりましたが、手順さえ押さえてしまえばスムーズに進められます。閉域環境で外部パッケージを管理する場合、一般的には内部プロキシ経由で取得するなどの方法もありますが、パッケージからのインストールが必要な場合には参考になれば幸いです。





