このトピックでは、GlassFish サーバーに SSL 証明書をインストールする方法について説明します。このプロセスには、証明書ファイルのダウンロードとアップロード、GlassFish サーバーでの証明書、証明書チェーン、秘密鍵の設定、およびインストールの検証が含まれます。
このトピックでは、Linux オペレーティングシステム上の glassfish-4.1.2-web におけるデフォルトの domain1 コンテナーを例として使用します。デプロイメントの手順は、ご利用のオペレーティングシステムや GlassFish サーバーのバージョンによって異なる場合があります。ご不明な点がある場合は、ビジネス担当者にお問い合わせください。
前提条件
操作手順
ステップ 1:SSL 証明書のダウンロード
SSL 証明書管理 ページに移動し、デプロイする証明書を見つけて、以下の情報を確認します:
証明書のステータス:ステータスは 発行済み である必要があります。ステータスが まもなく期限切れ または 期限切れ の場合は、SSL 証明書を更新する必要があります。
ドメイン名のバインド:この設定は、保護したいすべてのドメイン名と一致する必要があります。一致しない場合、HTTPS 経由でアクセスされたときにセキュリティ警告が表示されます。ドメイン名を追加または変更するには、「ドメイン名の追加と置換」をご参照ください。
対象の証明書の 操作 列で [その他] をクリックし、ダウンロード タブで、サーバータイプ が [その他] の証明書をダウンロードします。
ダウンロードした証明書パッケージを解凍します:
パッケージに証明書ファイル (.pem) と秘密鍵ファイル (.key) が含まれている場合は、両方のファイルを保存します。これらはデプロイメントに必要です。
パッケージに証明書ファイル (.pem) のみで秘密鍵ファイル (.key) が含まれていない場合は、ローカルに保存した秘密鍵ファイルを使用して証明書をデプロイする必要があります。
説明証明書の申請時に OpenSSL や Keytool などのツールを使用して証明書署名リクエスト (CSR) ファイルを生成した場合、秘密鍵ファイルはローカルマシンにのみ保存されます。ダウンロードした証明書パッケージには秘密鍵は含まれません。秘密鍵を紛失した場合、証明書は使用できなくなります。再度 商用証明書を購入し、新しい CSR と秘密鍵を生成する必要があります。
ステップ 2:GlassFish サーバーへの証明書のインストール
Linux サーバーにログインします。
Alibaba Cloud サーバー
以下の手順では、Alibaba Cloud の Elastic Compute Service (ECS) を例として説明します。他のタイプのサーバーについては、対応するプロダクトドキュメントをご参照ください。
ECS コンソールにログインします。左上のコーナーで、対象の ECS インスタンスが配置されているリージョンを選択します。
左側のナビゲーションウィンドウで、 を選択します。[インスタンス] ページで、対象の ECS インスタンスを見つけ、[操作] 列の [接続] をクリックします。
表示されたダイアログボックスで、ワークベンチ を選択し、今すぐサインイン をクリックします。
接続方法として [ターミナル] を選択し、必要な認証情報を入力して、画面の指示に従ってサーバーターミナルにログインします。詳細については、「ワークベンチを使用して ECS インスタンスにログイン」をご参照ください。
説明セキュリティグループルールを追加するよう求める注意が表示された場合は、[今すぐ追加] をクリックします。
他のクラウドプロバイダーのサーバー
クラウドプロバイダーが提供するリモート接続機能を使用して、サーバーターミナルにログインします。
非クラウドサーバー (物理サーバーや IDC ホストサーバーなど)
ローカルコンピューターから SSH ツールを使用してサーバーターミナルにログインします。
以下のコマンドの一部はオペレーティングシステムによって異なります。ご利用のサーバーのオペレーティングシステムに適用されるコマンドを選択してください。
RHEL/CentOS シリーズ:Alibaba Cloud Linux、Red Hat Enterprise Linux、CentOS、AlmaLinux、Rocky Linux、Anolis OS およびその派生 OS を含みます。
Debian/Ubuntu シリーズ:Debian、Ubuntu およびその派生 OS を含みます。
セキュリティグループとファイアウォールでポート 443 を開きます。
サーバーターミナルで次のコマンドを実行して、ポート 443 が開いているか確認します:
RHEL/CentOS
command -v nc > /dev/null 2>&1 || sudo yum install -y nc # <your_server_public_ip> をご利用のサーバーのパブリック IP アドレスに置き換えてください。 sudo ss -tlnp | grep -q ':443 ' || sudo nc -l 443 & sleep 1; nc -w 3 -vz <your_server_public_ip> 443出力が
Ncat: Connected to <your_server_public_ip>:443であれば、ポート 443 は開いています。そうでなければ、セキュリティグループとファイアウォールでポート 443 を開いてください。Debian/Ubuntu
command -v nc > /dev/null 2>&1 || sudo apt-get install -y netcat # <your_server_public_ip> をご利用のサーバーのパブリック IP アドレスに置き換えてください。 sudo ss -tlnp | grep -q ':443 ' || sudo nc -l -p 443 & sleep 1; nc -w 3 -vz <your_server_public_ip> 443出力が
Connection to <your_server_public_ip> port [tcp/https] succeeded!または[<your_server_public_ip>] 443 (https) openであれば、ポート 443 は開いています。そうでなければ、セキュリティグループとファイアウォールでポート 443 を開いてください。セキュリティグループの設定でポート 443 を開きます。
重要サーバーがクラウドプラットフォームにデプロイされている場合、そのセキュリティグループが TCP ポート 443 でのインバウンドトラフィックを許可していることを確認してください。そうでなければ、サービスにアクセスできなくなります。以下の手順では Alibaba Cloud ECS を例として説明します。他のクラウドプラットフォームについては、公式ドキュメントをご参照ください。
Elastic Compute Service (ECS) インスタンス ページに移動し、対象のインスタンス名をクリックしてインスタンス詳細ページに移動します。[セキュリティグループの詳細] セクションで、[アクション] を [許可]、[プロトコル] を [カスタム TCP]、[宛先 (現在のインスタンス)] を HTTPS (443)、[送信元] を [0.0.0.0/0 (任意)] に設定したルールを追加します。詳細については、「セキュリティグループルールの追加」をご参照ください。
ファイアウォールでポート 443 を開きます。
次のコマンドを実行して、システムでアクティブなファイアウォールサービスを特定します:
if command -v systemctl >/dev/null 2>&1 && systemctl is-active --quiet firewalld; then echo "firewalld" elif command -v ufw >/dev/null 2>&1 && sudo ufw status | grep -qw active; then echo "ufw" elif command -v nft >/dev/null 2>&1 && sudo nft list ruleset 2>/dev/null | grep -q 'table'; then echo "nftables" elif command -v systemctl >/dev/null 2>&1 && systemctl is-active --quiet iptables; then echo "iptables" elif command -v iptables >/dev/null 2>&1 && sudo iptables -L 2>/dev/null | grep -qE 'REJECT|DROP|ACCEPT'; then echo "iptables" else echo "none" fi出力が
noneの場合は、これ以上の操作は不要です。それ以外の場合は、出力 (firewalld、ufw、nftables、またはiptables) に応じて以下の対応するコマンドを実行し、ポート 443 を開きます:firewalld
sudo firewall-cmd --permanent --add-port=443/tcp && sudo firewall-cmd --reloadufw
sudo ufw allow 443/tcpnftables
sudo nft add table inet filter 2>/dev/null sudo nft add chain inet filter input '{ type filter hook input priority 0; }' 2>/dev/null sudo nft add rule inet filter input tcp dport 443 counter accept 2>/dev/nulliptables
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPTシステム再起動後も iptables ルールが維持されるようにするには、次のコマンドを実行します:
RHEL/CentOS
sudo yum install -y iptables-services sudo service iptables saveDebian/Ubuntu
sudo apt-get install -y iptables-persistent sudo iptables-save | sudo tee /etc/iptables/rules.v4 >/dev/null
GlassFish のインストールディレクトリに証明書を保存するためのディレクトリを作成します。
GlassFish のインストールディレクトリに移動します。
この例では、glassfish4 は /home ディレクトリにインストールされています。必要に応じてパスを調整してください。
cd /home/glassfish4cert という名前の証明書ディレクトリを作成します。
mkdir cert
証明書ファイルと秘密鍵ファイルを cert フォルダにアップロードします。
説明PuTTY、Xshell、WinSCP などのリモートログインツールのローカルファイルアップロード機能を使用してファイルをアップロードできます。Alibaba Cloud Elastic Compute Service (ECS) インスタンスを使用している場合、ファイルのアップロード方法の詳細については、「ファイルのアップロードまたはダウンロード」をご参照ください。
cert ディレクトリで、openssl コマンドを実行して、ダウンロードした PEM 証明書を PKCS12 形式に変換します。パスワードを changeit に設定し、ファイル名を mycert.p12、エイリアスを s1as に設定します。
説明domain_name.pem と domain_name.key を、実際の証明書ファイルと秘密鍵ファイルに置き換えてください。
changeit は GlassFish サーバーに組み込まれている証明書のデフォルトパスワードです。変更している場合は、実際の証明書パスワードを使用してください。
openssl pkcs12 -export -in domain_name.pem -inkey domain_name.key -out mycert.p12 -passout pass:changeit -name s1ascert ディレクトリで、keytool コマンドを実行して mycert.p12 を JKS 形式に変換します。ファイル名を keystore.jks、エイリアスを s1as に設定します。
keytool -importkeystore -destkeystore keystore.jks -srckeystore mycert.p12 -srcstoretype PKCS12 -alias s1askeytool コマンドを実行すると、keystore.jks のパスワード設定と mycert.p12 の元のパスワードの入力を求められます。両方に changeit と入力してください。
cert ディレクトリで、keytool コマンドを実行して、ダウンロードした PEM 証明書を JKS 形式に変換します。ファイル名を cacerts.jks、エイリアスを s1as に設定します。
domain_name.pem を実際の証明書ファイルに置き換えてください。
keytool -importcert -trustcacerts -destkeystore cacerts.jks -file domain_name.pem -alias s1askeytool コマンドを実行すると、cacerts.jks のパスワード設定を求められます。パスワードを changeit に設定してください。
cert ディレクトリで、以下のコマンドを実行して /home/glassfish4/glassfish/domains/domain1/config ディレクトリ内の cacerts.jks と keystore.jks ファイルを置き換えます。
cacerts.jks の置換
cp ./cacerts.jks /home/glassfish4/glassfish/domains/domain1/configkeystore.jks の置換
cp ./keystore.jks /home/glassfish4/glassfish/domains/domain1/config
/home/glassfish4/glassfish/domains/domain1/config/domain.xml 設定ファイルを編集して、ポート番号を変更します。
次の図に示すように network-listeners セクションを見つけます。例のようにポート番号を変更します。ポートを変更する前に、ポート 80 と 443 が使用されていないことを確認してください。

<network-listeners> <network-listener protocol="http-listener-1" port="80" name="http-listener-1" thread-pool="http-thread-pool" transport="tcp"></network-listener> <network-listener protocol="http-listener-2" port="443" name="http-listener-2" thread-pool="http-thread-pool" transport="tcp"></network-listener> <network-listener protocol="admin-listener" port="4848" name="admin-listener" thread-pool="admin-thread-pool" transport="tcp"></network-listener> </network-listeners>/home/glassfish4/glassfish/bin ディレクトリに移動し、次のコマンドを実行してサーバーを再起動します。
./asadmin restart-domain domain1
ステップ 3:インストールの検証
Web ブラウザーで
https://yourdomainのようにドメインに HTTPS でアクセスします。yourdomainは実際のドメインに置き換えてください。ブラウザーのアドレスバーに鍵アイコンが表示されれば、証明書は正常にデプロイされています。アクセスエラーが発生したり、鍵アイコンが表示されない場合は、ブラウザーのキャッシュをクリアするか、シークレット (プライバシー) モードで再試行してください。

バージョン 117 以降、Chrome のアドレスバーの
アイコンは新しい
アイコンに置き換えられました。このアイコンをクリックすると、鍵情報を表示できます。
問題が解決しない場合は、「よくある質問」セクションでトラブルシューティングをご参照ください。
よくある質問
インストールまたは更新後、証明書が機能しない、または HTTPS にアクセスできないのはなぜですか?
一般的な原因は次のとおりです:
サーバーのセキュリティグループまたはファイアウォールでポート 443 が開かれていない。詳細については、「セキュリティグループとファイアウォールでポート 443 を開く」をご参照ください。
証明書の ドメイン名のバインド に、アクセス中のドメイン名が含まれていない。詳細については、「証明書が対象のドメイン名と一致するかどうかの確認」をご参照ください。
GlassFish アプリケーションの設定ファイルを変更したが、GlassFish サービスを再起動していない。詳細については、「GlassFish サービスの再起動」をご参照ください。
証明書ファイルが正しく置き換えられていないか、Flask の構成で証明書パスが正しく指定されていません。Flask アプリケーションの証明書構成と証明書ファイルの両方が最新かつ有効であることを確認してください。
他のサービスでの証明書の欠落:ドメインが Content Delivery Network (CDN)、Server Load Balancer (SLB)、Web Application Firewall (WAF) などのサービスを使用している場合、証明書はそれらのサービスにもインストールする必要があります。「複数の Alibaba Cloud サービスをトラフィックが通過する場合の証明書デプロイメント場所」をご参照の上、設定を完了してください。
複数サーバーでのデプロイメントが不完全:ドメインの DNS が複数のサーバーに解決される場合、証明書はすべてのサーバーにインストールする必要があります。
さらなるトラブルシューティングについては、「ブラウザーのエラーメッセージに基づく証明書デプロイメント問題の解決」および「SSL 証明書デプロイメントのトラブルシューティングガイド」をご参照ください。
GlassFish にインストール済みの SSL 証明書を更新 (置換) するにはどうすればよいですか?
サーバー上の元の証明書ファイル (.pem および .key) をバックアップします。Certificate Management Service コンソールにログインし、新しい証明書ファイルをダウンロードしてサーバーにアップロードし、古いファイルを上書きします。パスとファイル名が同じであることを確認してください。最後に、GlassFish サービスを再起動して新しい証明書を有効にします。