SSL-VPN の二要素認証では、クライアントが接続を確立する前に、2 つの独立した認証形式に合格する必要があります。デフォルトの SSL クライアント証明書認証と IDaaS (Identity as a Service) のユーザー名とパスワードによる認証です。Virtual Private Cloud (VPC) への SSL-VPN 接続は、両方の認証が成功した場合にのみ許可されます。この二重認証メカニズムは、ID の盗難や不正アクセスを防ぐことでセキュリティを強化し、VPC 内の機密データを外部の脅威から保護します。本トピックでは、SSL-VPN の二要素認証機能を使用して、クライアントが VPC 内のリソースに安全にアクセスする方法について説明します。
シナリオ例
本トピックでは、上記の図のシナリオを例として使用します。ある企業が Alibaba Cloud IDaaS を使用して、従業員のアカウントと権限を管理および保守しています。この企業は中国 (杭州) リージョンに VPC インスタンスを持ち、VPC 内の Elastic Compute Service (ECS) インスタンスにアプリケーションをデプロイしています。同社は、出張中の従業員がいつでも VPC リソースにアクセスできるようにすると同時に、従業員の ID が認証されることを確実にしたいと考えています。
この企業は、VPN Gateway の SSL-VPN 機能を使用し、SSL-VPN の二要素認証を有効にすることができます。クライアントは、SSL クライアント証明書認証と IDaaS のユーザー名・パスワード認証の両方の認証に成功した後、VPC への SSL-VPN 接続を確立し、VPC 内のリソースに安全にアクセスできます。
前提条件
-
Enterprise Edition の IDaaS EIAM インスタンスが作成済みであること。詳細については、「インスタンスの管理」をご参照ください。
重要-
IDaaS EIAM 1.0 インスタンスは購入できなくなりました。IDaaS EIAM 2.0 インスタンスの使用を推奨します。本トピックでは、IDaaS EIAM 2.0 インスタンスを例として使用します。詳細については、「[変更のお知らせ] SSL-VPN 二要素認証が IDaaS EIAM 2.0 をサポート」をご参照ください。
-
IDaaS EIAM 1.0 インスタンスの使用方法については、「IDaaS EIAM 1.0インスタンスの設定方法」をご参照ください。
-
-
EIAM インスタンスで組織とアカウントが作成済みであること。
本トピックでは、EIAM インスタンスで組織とアカウントを手動で作成する方法について説明します。組織とアカウントの例を示します。LDAP プロトコルを介してアカウント情報を EIAM インスタンスに自動的に同期し、従業員が AD/LDAP 認証を使用してアプリケーションにログオンできるようにするには、「クライアントとVPC間のAD認証によるSSL-VPN接続の確立」をご参照ください。アカウントの同期方法の詳細については、「アカウントまたは組織の作成」をご参照ください。例えば、IDaaS インスタンスの [アカウント管理] ページで、組織ツリーの [SSL-VPN] 組織に、ステータスが [正常] の 鈴木 という名前のアカウントが含まれています。
-
中国 (杭州) リージョンに VPC を作成し、VPC 内の ECS インスタンスにアプリケーションをデプロイ済みであること。詳細については、「IPv4 CIDRブロックを持つVPCの作成」をご参照ください。
VPC 内の ECS インスタンスのセキュリティグループルールで、クライアントからクラウドリソースへのアクセスが許可されていることを確認してください。詳細については、「セキュリティグループルールのクエリ」および「セキュリティグループルールの追加」をご参照ください。
-
クライアントがインターネットにアクセスでき、クライアントのプライベート CIDR ブロックが VPC のプライベート CIDR ブロックと重複していないことを確認してください。
操作手順
ステップ1:Alibaba Cloud SSL-VPN アプリケーションの追加
-
IDaaS コンソールにログインします。
-
EIAM ページで、「前提条件」セクションで作成した EIAM インスタンスを見つけ、Actions 列にある Console をクリックします。
-
EIAM インスタンスの左側のナビゲーションペインで、Applicationを選択します。Application ページで、Add Application をクリックします。
-
Add Application ページで、[Alibaba Cloud - SSL VPN] テンプレートを見つけ、Add Application をクリックします。
-
[アプリケーションの追加] ダイアログボックスで、アプリケーションのカスタム名を入力し、[今すぐ追加] をクリックします。
-
アプリケーション詳細ページのSign-Inタブで、次のパラメーターを設定し、タブの下部にあるSaveをクリックします。
[SSO]:これを有効のままにします。
[Grant Types]: デフォルト値は Password Grant です。 IdP には、デフォルト値の IDaaS Account を選択します。 システムは、EIAM インスタンスでお客様が手動で作成したアカウントを使用して従業員を認証します。
[Authorize]: デフォルト値の Manually を使用します。このモードでは、特定のアカウントがアプリケーションにアクセスできるように、手動でアクセス権を付与する必要があります。詳細については、「承認範囲」をご参照ください。
-
Sign-In タブで、Application Authorization タブをクリックします。
SSL-VPN 接続を確立する必要がある従業員アカウントに承認を付与します。詳細については、「アプリケーション承認」をご参照ください。
ステップ2:VPN Gateway インスタンスの作成
- VPN gatewayコンソールにログインします。
VPN Gateway ページで、[VPN Gateway の作成] をクリックします。
-
[VPN ゲートウェイ] ページで、以下のように VPN ゲートウェイを設定し、今すぐ購入 をクリックして支払いを完了します。
次の表では、本トピックに関連するパラメーターのみを説明します。他のパラメーターはデフォルト値のままにします。詳細については、「VPN Gatewayインスタンスの作成と管理」をご参照ください。
パラメーター
説明
リージョン
VPN ゲートウェイインスタンスを作成するリージョンを選択します。この例では、[中国 (杭州)] が選択されています。
説明VPC と VPN Gateway インスタンスが同じリージョンにあることを確認してください。
[ゲートウェイタイプ]
作成する VPN ゲートウェイのタイプを選択します。この例では、標準 を選択します。
[ネットワークタイプ]
VPN ゲートウェイインスタンスのネットワークタイプを選択します。この例では、[パブリック] を選択します。
[トンネル]
システムは、現在のリージョンでサポートされている IPsec-VPN 接続のトンネルモードを表示します。
VPC
接続する VPC を選択します。
[vSwitch 1]
VPC から vSwitch を選択します。
[シングルトンネル] を選択した場合は、1 つの vSwitch のみ指定する必要があります。
[デュアルトンネル] を選択した場合は、2 つの vSwitch を指定する必要があります。
IPsec-VPN 機能が有効になると、システムは 2 つの vSwitch にそれぞれ ENI を作成し、IPsec-VPN 接続を介して VPC と通信するためのインターフェースとして使用します。各 ENI は、vSwitch 内の 1 つの IP アドレスを占有します。
説明システムはデフォルトで vSwitch を選択します。デフォルトの vSwitch を変更または使用できます。
VPN ゲートウェイの作成後、VPN ゲートウェイに関連付けられた vSwitch を変更することはできません。VPN ゲートウェイの詳細ページで、VPN ゲートウェイに関連付けられた vSwitch、vSwitch が属するゾーン、vSwitch 内の ENI を表示できます。
[vSwitch 2]
VPC から 2 番目の vSwitch を選択します。
関連付けられた VPC 内の異なるゾーンにある 2 つの vSwitch を指定して、ゾーン間の IPsec-VPN 接続のディザスタリカバリを実装します。
1 つのゾーンのみをサポートするリージョンの場合、ゾーン間のディザスタリカバリはサポートされていません。IPsec-VPN 接続の高可用性を実装するために、ゾーン内の 2 つの vSwitch を指定することをお勧めします。最初の vSwitch と同じ vSwitch を選択することもできます。
説明VPC に 2 番目の vSwitch がない場合は、作成できます。詳細については、「vSwitchの作成と管理」をご参照ください。
IPsec-VPN
IPsec-VPN 機能を有効にするかどうかを指定します。この例では、[無効化] を選択します。
SSL-VPN
SSL-VPN 機能を有効にするかどうかを指定します。この例では、[有効化] を選択します。
[SSL 接続数]
同時に接続できるクライアントの最大数を選択します。
説明[SSL 接続数] は、SSL-VPN 機能を有効にした後にのみ設定できます。
-
VPN Gateway ページに戻り、VPN ゲートウェイ インスタンスを表示します。
新しい VPN ゲートウェイインスタンスは 準備中 状態です。1~5 分後、状態は 正常 に変わります。正常 状態は、VPN ゲートウェイインスタンスが初期化されたことを示します。
ステップ3:SSL サーバーの作成
左側のナビゲーションウィンドウで、 を選択します。
-
上部メニューで、SSL サーバーのリージョンを選択します。
説明SSL サーバーと VPN Gateway インスタンスが同じリージョンにあることを確認してください。
SSL サーバー ページで、[SSLサーバーの作成] をクリックします。
-
SSLサーバーの作成 パネルで、次の表の説明に従って SSL サーバーを設定し、OK をクリックします。
次の表では、本トピックに関連するパラメーターのみを説明します。他のパラメーターはデフォルト値のままにします。詳細については、「SSL サーバーの作成と管理」をご参照ください。
パラメーター
説明
[VPN Gateway]
作成した VPN Gateway インスタンスを選択します。
[ローカルネットワーク]
アクセスしたい VPC の CIDR ブロックを入力します。この例では、192.168.0.0/16 を使用します。
[クライアント CIDR ブロック]
クライアントが VPC にアクセスするために使用する CIDR ブロックを入力します。この例では、10.0.0.0/24 を使用します。
重要クライアント CIDR ブロックのサブネットマスクは 16~29 ビット長である必要があります。
クライアント CIDR ブロックがローカルネットワーク、VPC CIDR ブロック、またはクライアント側でルーティングされる CIDR ブロックと重複しないようにしてください。
10.0.0.0/8、172.16.0.0/12、192.168.0.0/16 などのプライベート CIDR ブロックまたはそのサブネットを使用することを推奨します。パブリック IP アドレス範囲を使用する必要がある場合は、適切なルーティングを確保するために、そのパブリック IP アドレス範囲を VPC のユーザー定義 CIDR ブロックとして設定してください。ユーザー定義 CIDR ブロックの詳細については、「VPC FAQ」および「VPC FAQ」をご参照ください。
SSL サーバーを作成すると、システムはクライアント CIDR ブロックのルートを VPC のルートテーブルに自動的に追加します。このルートを手動で追加しないでください。そうしないと、SSL-VPN トラフィックが正常に転送されない可能性があります。
[詳細設定]
二要素認証を有効にします。本トピックでは EIAM 2.0 を使用します。他の設定はデフォルト値のままにします。
-
[IDaaS インスタンスのリージョン]:[中国 (杭州)] を選択します。
-
[IDaaS インスタンス]:前提条件で作成した EIAM インスタンスを選択します。
-
[IDaaS アプリケーション]:追加した Alibaba Cloud SSL-VPN アプリケーションを選択します。
説明UAE (ドバイ) リージョンで SSL サーバーを作成する場合、リージョン間のレイテンシを削減するために、シンガポールリージョンの IDaaS EIAM 2.0 インスタンスをバインドすることを推奨します。
ステップ4:SSL クライアント証明書の作成
左側のナビゲーションウィンドウで、 を選択します。
SSL クライアント ページで、[SSL クライアントの作成] をクリックします。
-
SSL クライアントの作成 パネルで、SSL クライアント証明書の名前を入力し、対応するSSL サーバーを選択して、OKをクリックします。
-
SSL クライアント ページで、作成した SSL クライアント証明書を見つけ、操作 列の 証明書のダウンロード をクリックします。
ダウンロードした SSL クライアント証明書を保存します。この証明書はクライアントの設定で必要になります。
ステップ5:クライアントの設定
Linux クライアント
-
コマンドラインウィンドウを開きます。
-
次のコマンドを実行して、OpenVPN クライアントをインストールします。
# CentOS では、次のコマンドを実行します。 yum install -y openvpn # /etc/openvpn/conf/ ディレクトリが存在するか確認します。存在しない場合は作成します。 cd /etc/openvpn # openvpn ディレクトリに移動します。 ls # conf ディレクトリが存在するか確認します。 mkdir -p /etc/openvpn/conf # conf ディレクトリが存在しない場合は作成します。 # Ubuntu では、次のコマンドを実行します。 apt-get update apt-get install -y openvpn # /etc/openvpn/conf/ ディレクトリが存在するか確認します。存在しない場合は作成します。 cd /etc/openvpn # openvpn ディレクトリに移動します。 ls # conf ディレクトリが存在するか確認します。 mkdir -p /etc/openvpn/conf # conf ディレクトリが存在しない場合は作成します。 -
ダウンロードした SSL クライアント証明書を解凍し、ファイルを /etc/openvpn/conf/ ディレクトリにコピーします。
-
/etc/openvpn/conf/ ディレクトリに移動し、次のコマンドを実行してから、ユーザー名とパスワードを入力します。IDaaS がクライアントを認証した後、SSL-VPN 接続が確立されます。
openvpn --config /etc/openvpn/conf/config.ovpn --daemon[root@iZuxxx raihcZ conf]# openvpn --config /etc/openvpn/conf/config.ovpn --daemon Enter Auth Username: 鈴木 Enter Auth Password: ********* [root@iZuf6fxxxxxxxxxihcZ conf]# ps aux | grep openvpn root 10592 0.0 0.1 14532 5640 ? Ss 14:46 0:00 openvpn --config /etc/openvpn/conf/config.ovpn --daemon root 10594 0.0 0.0 221528 828 pts/1 S+ 14:46 0:00 grep --color=auto openvpn [root@iZufxxx ihcZ conf]#
Windows クライアント
-
お使いの Windows のバージョンに対応する OpenVPN クライアントをダウンロードしてインストールします:
-
Windows 64 ビット (Intel/AMD): OpenVPN クライアント (Windows 64 ビット)。
-
Windows ARM64: OpenVPN クライアント (Windows ARM64)。
ダウンロードリンクが開けない場合は、アカウントマネージャーまたは Alibaba Cloud のエンジニアにお問い合わせください。
-
-
ダウンロードした SSL クライアント証明書パッケージを解凍し、すべての展開されたファイルを OpenVPN の設定ディレクトリにコピーします。
-
デフォルトパス:
C:\Program Files\OpenVPN\config -
注意: インストールパスを変更した場合は、インストールディレクトリ内の `config` フォルダにファイルをコピーしてください。

-
-
テキストエディターで
config.ovpnファイルを開き、ファイルの末尾に次の行を追加します:disable-dco。OpenVPN 2.6 で導入されたデータチャネルオフロード (DCO) 機能は、Windows 10 や Windows 11 の特定バージョンなど、一部の Windows システムと互換性がありません。DCO を無効にすることで、これらのデバイスで発生する可能性のある接続問題が解決されます。
client dev tun proto tcp remote 121.41.xxx resolv-retry infinite nobind persist-key persist-tun ca ca.crt cert vsc-bp1xxx.crt key vsc-bp1xxx.key cipher AES-128-CBC ;comp-lzo verb 4 disable-dco -
OpenVPN クライアントを起動し、[接続] をクリックしてから、ユーザー名とパスワードを入力します。IDaaS がクライアントを認証した後、SSL-VPN 接続が確立されます。
macOS クライアント (OpenVPN)
-
コマンドラインウィンドウを開きます。
-
Homebrew がインストールされていない場合は、次のコマンドを実行してインストールします。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" -
次のコマンドを実行して、OpenVPN クライアントをインストールします。
brew install openvpn -
ダウンロードした SSL クライアント証明書を解凍し、ファイルを構成ディレクトリにコピーします。
-
/usr/local/etc/openvpn フォルダ内のすべての構成ファイルをバックアップします。
重要OpenVPN のデフォルトのインストールパスは、macOS のバージョンによって異なる場合があります。次の手順では、実際のインストールパスを使用してください。
-
次のコマンドを実行して、OpenVPN 構成ファイルを削除します。
rm /usr/local/etc/openvpn/* -
次のコマンドを実行して、ダウンロードした SSL クライアント証明書を構成ディレクトリにコピーします。
cp cert_location /usr/local/etc/openvpn/cert_locationは、ダウンロードした SSL クライアント証明書へのパスです。例:/Users/example/Downloads/certs6.zip
-
-
次のコマンドを実行して、証明書を解凍します。
cd /usr/local/etc/openvpn/ unzip /usr/local/etc/openvpn/certs6.zip /usr/local/etc/openvpn/ ディレクトリに移動し、次のコマンドを実行してから、ユーザー名とパスワードを入力して SSL-VPN 接続を確立します。
sudo /usr/local/opt/openvpn/sbin/openvpn --config /usr/local/etc/openvpn/config.ovpn
ステップ6:接続テスト
次の手順は、Linux クライアントと VPC 間の接続性をテストする方法を示しています。
-
クライアントでコマンドラインウィンドウを開きます。
-
pingコマンドを実行して VPC 内の ECS1 インスタンスにアクセスし、接続性を確認します。ping <ECS1 インスタンスの IP アドレス>以下に示すような応答パケットを受信した場合、クライアントは VPC に正常に接続されています。
[root@iZuf6 ihcZ conf]# ping 192.168.10.154 PING 192.168.10.154 (192.168.10.154) 56(84) bytes of data. 64 bytes from 192.168.10.154: icmp_seq=1 ttl=63 time=11.9 ms 64 bytes from 192.168.10.154: icmp_seq=2 ttl=63 time=11.7 ms 64 bytes from 192.168.10.154: icmp_seq=3 ttl=63 time=11.7 ms 64 bytes from 192.168.10.154: icmp_seq=4 ttl=63 time=11.8 ms 64 bytes from 192.168.10.154: icmp_seq=5 ttl=63 time=11.5 ms ^Z [8]+ Stopped ping 192.168.10.154 [root@iZuf6hgotc :Z conf]#
よくある質問
IDaaS EIAM 1.0 の設定
IDaaS EIAM 1.0 インスタンスを使用している場合は、[Alibaba Cloud SSL-VPN アプリケーションの追加] ステップはスキップしてください。SSL サーバーを作成する際に、EIAM 1.0 インスタンスを直接関連付けます。他の手順は同じです。[SSL サーバーの作成] ページで [詳細設定] を展開し、[プロトコル] を [TCP (推奨)] に、[ポート] を 1194 に、[暗号化アルゴリズム] を AES-128-CBC に、[圧縮] を いいえ に設定し、[二要素認証] を有効にします。[IDaaS インスタンスバージョン] で、[EIAM 1.0 (レガシー)] を選択します。現在の VPN バージョンが EIAM 2.0 をサポートしていない場合は、まず最新バージョンにアップグレードする必要があります。その後、[IDaaS インスタンスのリージョン] と対応する [IDaaS インスタンス] を選択します。
OTP 二次認証のサポートについて
いいえ、サポートしていません。
IDaaS は、ユーザー名とパスワードによる認証のみをサポートしています。ワンタイムパスワード (OTP) や SMS 認証など、クライアントの二次認証方法はサポートされていません。