Как использовать HTTPS в прослушивателе Java webhook (Spark)

#java #apache-spark #https #stripe-payments

#java #apache-spark #https #stripe-платежи

Вопрос:

У меня уже некоторое время есть прослушиватель webhook в моей Java-программе, и он работает так, как и должен, когда вы отправляете webhook на URL прослушивателя. Теперь мне нужно создать URL-адрес HTTPS, но я не знаю, является ли это проблемой, которую мне нужно исправить в моем Java-коде или на моем веб-сервере Apache. У меня есть действительный доверенный сертификат, но всякий раз, когда я пытаюсь отправить webhook через Stripe, он выдает только сообщение об ошибке TLS и ничего не возвращает. Я думаю, это потому, что порты прослушивателей не используют SSL, но я не знаю, как это исправить. Если я добавлю порт к виртуальным хостам в Apache, чтобы использовать HTTPS для порта, то Java не сможет его прослушивать, потому что он уже будет использоваться. Это мой класс для прослушивателя. Нужно ли мне добавить какой-либо код, чтобы он прослушивал через HTTPS?
Примером URL для прослушивателя (который работает) может быть http://verifus.ddns.net:4568/webhook . Когда есть HTTPS, он вообще не работает.

 
import com.stripe.Stripe;
import com.stripe.model.*;
import com.stripe.net.ApiResource;
import net.dv8tion.jda.core.JDA;
import net.dv8tion.jda.core.entities.Role;
import org.apache.commons.httpclient.HttpStatus;
import org.simplejavamail.email.Email;
import org.simplejavamail.email.EmailBuilder;
import org.simplejavamail.mailer.MailerBuilder;
import us.verif.bot.Config;
import us.verif.bot.sql.StripeSql;

import java.security.SecureRandom;
import java.util.EventListener;
import java.util.Random;

import static spark.Spark.port;
import static spark.Spark.post;

public class StripeWebhook implements EventListener {

    static final private String ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    final private Random rng = new SecureRandom();
    private JDA jda;


    public StripeWebhook(JDA jda) {
        this.jda = jda;
    }

    public void startListener() {

        port(Integer.parseInt(Config.getStripeWebhookPort()));


        post("/webhook", (request, response) -> {
            Event event = ApiResource.GSON.fromJson(request.body(), Event.class);
//Just some event checkers onwards
  

Комментарии:

1. Привет, Патрик, вам нужно будет обслуживать конечную точку Webhook с использованием https. К сожалению, Stripe требует этого. Это должно быть настроено на вашем веб-сервере (например, сервере apache).

2. SSL уже есть на моем сервере, но использование разных портов по какой-то причине не работает.

Ответ №1:

Вам необходимо настроить ваш сервер Apache с вашими SSL-сертификатами. Вы можете прочитать документы или следовать некоторым руководствам и практическим инструкциям, описывающим точные шаги.

Комментарии:

1. На моем веб-сервере уже настроен SSL. Verifus.ddns.net есть ли что-то еще, что мне нужно настроить, потому что SSL уже работает, но не на разных портах?

2. Вам также необходимо настроить его на порт, на котором вы запускаете свой webhook.

3. Проблема в том, что если я настрою SSL на порту, добавив Listen <порт> и создав виртуальный хост, то программа Java не сможет прослушивать этот порт.