0

こんにちは。タイトルにあるように、Android アプリでキャディを利用した Web サイトのサブドメインに接続できません。アプリのバックエンドを Heroku から自分の digitalocean ドロップレットに移行しており、アプリは Heroku を使用していたときに機能していました。

表示されるエラー メッセージは次のとおりです。

W/System.err: javax.net.ssl.SSLException: hostname in certificate didn't match: <sub.domain.com> != <domain.com> OR <domain.com>
W/System.err:     at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:185)
W/System.err:     at org.apache.http.conn.ssl.BrowserCompatHostnameVerifier.verify(BrowserCompatHostnameVerifier.java:54)
W/System.err:     at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:114)
W/System.err:     at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:95)
W/System.err:     at org.apache.http.conn.ssl.SSLSocketFactory.createSocket(SSLSocketFactory.java:388)
W/System.err:     at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:165)
W/System.err:     at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
W/System.err:     at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
W/System.err:     at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
W/System.err:     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
W/System.err:     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
W/System.err:     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)

関連する Android コードは次のとおりです。

try {
    HttpClient client = new DefaultHttpClient();
    final HttpPostHC4 post = new HttpPostHC4(url);
    String json = "";

    ArrayList<NameValuePair> nameValuePairs = new ArrayList<>();
    for (Map.Entry<String, String> entry : valuePair.entrySet()) {
    nameValuePairs.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));
    }

    UrlEncodedFormEntityHC4 entity = new UrlEncodedFormEntityHC4(nameValuePairs, "UTF-8");
    content = entity.getContent();
    System.out.println(entity);
    post.setEntity(entity);

    final HttpResponse response = client.execute(post);
    code = response.getStatusLine().getStatusCode();
    responseText = EntityUtils.toString(response.getEntity());
} catch (Exception exc) {
    exc.printStackTrace();
    if (responseText != null) {
    System.out.println(responseText);
    }
}

そして、これは私のキャディファイルの関連セクションです

sub.domain.com {

    root /var/www/sub.domain.com/public
    log /var/www/sub.domain.com/storage/logs/caddy-access.log
    errors /var/www/sub.domain.com/storage/logs/caddy-error.log

    fastcgi / /run/php/php7.0-fpm.sock php {
    index index.php
    }

    rewrite {
    r .*
    ext /
    to /index.php?{query}
    }

}

Web ブラウザーでサブドメインに接続できるので、なぜこれが起こっているのかよくわかりません。ホスト名の検証を無効にすることにあまり熱心ではないので、Caddy 側で修正する方法があるかどうか疑問に思っています。

4

1 に答える 1