閉域EC2にSSMS 22をオフラインインストールしてみた

閉域EC2にSSMS 22をオフラインインストールしてみた

2026.06.05

はじめに

こんにちは、ぐっさんです!

プライベートサブネット(インターネット接続なし)の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インストールはこちらの手順を参照してください。

https://dev.classmethod.jp/articles/aws-cli-install-windows-ec2-private-subnet/


手順

基本的には以下の公式手順をもとにして進めます。

https://learn.microsoft.com/ja-jp/ssms/install/create-offline

事前準備(ローカルMac)

オフラインEC2で必要なファイルをあらかじめS3にアップロードしておきます。私のローカルPCはMacのため、レイアウト作成コマンド(Windows専用)は一時EC2で実施しています。それ以外のファイルはローカルのMacにダウンロードして準備しました。

Microsoft Windows Code Signing PCA 2024 証明書

以下のページで取得できます。

https://learn.microsoft.com/ja-jp/ssms/install/install-certificates#validate-a-certificate-for-offline-installations

「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にアップロードしてください。

https://learn.microsoft.com/ja-jp/ssms/install/create-offline#step-3---install-ssms-from-the-local-layout

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"

結果
ssms_1

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

  • レイアウトを作成
# レイアウトを作成(コンポーネント一式をダウンロード)
C:\SSMS_Download\vs_SSMS.exe --layout C:\SSMS_Layout --lang ja-JP

--lang ja-JP で日本語のみに絞ることでダウンロードサイズを抑えられます。完了まで数分程度かかります。

ファイルエクスプローラーでレイアウトフォルダが確認できます。
ssms_3

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

完了すると以下のメッセージが表示されます。

Setup completed successfully.
Send us your feedback on the layout experience:  http://aka.ms/vs/setup/layout/feedback
Press any key to continue...

結果
ssms_5

任意のキーを押して画面を閉じます。続けて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)が必要です。コントロールパネルの「プログラムと機能」で確認できます。

control_1

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のインストーラーが立ち上がります。

ssms_gui_1

進捗状況

ssms_gui_2

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

検索窓から確認すると、ちゃんとアプリケーションが入っていました。

ssms_gui_3

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

ssms_gui_4

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.

詳細は公式ドキュメントを参照してください。

https://learn.microsoft.com/ja-jp/ssms/install/install-certificates#validate-a-certificate-for-offline-installations


まとめ

公式ドキュメントの記載を読み飛ばしてしまったために証明書で手こずりましたが、手順さえ押さえてしまえばスムーズに進められます。閉域環境で外部パッケージを管理する場合、一般的には内部プロキシ経由で取得するなどの方法もありますが、パッケージからのインストールが必要な場合には参考になれば幸いです。


参考

この記事をシェアする

関連記事