WSO2を正常に構成し、NGINXリバースプロキシも設定しました。ただし、発行元または開発者ポータルのログインページから[パスワードを忘れた場合]リンクをクリックすると、エラーが発生します–バックエンドサービスへのアクセス中にエラーが発生しました wso2carbon.log
を見てください ファイルはより多くの情報を明らかにします:
"ERROR {org.wso2.carbon.identity.mgt.endpoint.util.client.ApiClient} - Error while performing the request method: GET on the resource: https://localhost:9443/api/identity/recovery/v0.9/captcha?tenant-domain=carbon.super&captcha-type=ReCaptcha&recovery-type=password-recovery com.sun.jersey.api.client.ClientHandlerException: javax.net.ssl.SSLHandshakeException: No subject alternative DNS name matching localhost found".
エラーは、tg.comに対して発行されたSSL証明書を使用しているときに、ローカルホストURLがパスワード回復エンドポイントに接続するためにWSO2によって使用されていることを明確に示しています。したがって、SSLHandshakeException「ローカルホストに一致するサブジェクト代替DNS名が見つかりません」。ここでの問題は、SSL証明書がLet’s Encrypt認証局によって発行されたものであり、サブジェクト代替名(SAN)が「localhost
」に設定されていないことです。 '、 明らかに。 Let’sEncryptがローカルホストをSANとしてサポートしない理由を知るにはここをクリックしてください。
WSO2はホスト名をtg.comとして使用するように構成されていますが、サービスは引き続きlocalhost
に接続します。 パスワード回復エンドポイントにアクセスします。 repository/conf/deployment.toml
でサーバーのホスト名を設定する方法は次のとおりです。 。
[server] hostname = "tg.com"
では、ローカルホストに依存するのではなく、サーバーのホスト名を使用する必要があることをWSO2に通知するにはどうすればよいでしょうか。
WSO2はlocalhost
に依存しています 内部API呼び出しの場合、ほとんどの構成ファイル(localhostでハードコードされている)で確認できます。この構成は、サービスエンドポイントの内部絶対URLを構築するために使用され、内部API呼び出しが生成されるときに使用されます。したがって、「localhost
」を置き換えます ‘サーバーのホスト名を構成ファイルに直接含めると、他のさまざまな問題が発生する可能性があります。
内部ホスト名を構成するには、次の2つのオプションのいずれかに従います。
オプション1 :internal_hostname
の設定 deployment.toml
の変数 ファイル。
deployment.toml
を開きます 「repository/conf/
」の下にあるファイル ‘フォルダを作成し、[server]
の下に次の行を追加します セクション。
internal_hostname = "tg.com"
希望のホスト名に変更することを忘れないでください。
オプション2: サブジェクト代替名としてローカルホストを追加
別のオプションは、ローカルホストがSAN属性に追加された新しい自己署名証明書を生成することです。
keytool -genkey -alias <alias_name> -keyalg RSA -keysize 2048 -keystore <keystore_name>.jks -dname "CN=<hostname>, OU=<organizational_unit>,O=<organization>,L=<Locality>,S=<State/province>,C=<country_code>" -storepass <keystore_password> -keypass <confirm_keystore_password> -ext SAN=dns:localhost -ext ExtendedKeyUsage=serverAuth -validity 825
注: 自己署名証明書は、開発環境とテスト環境でのみ使用できます。
WSO2のキーストアを設定する方法については、このガイドを参照してください。