Как я могу использовать пакет autocert Go с CloudFlare? - PullRequest
0 голосов
/ 27 февраля 2020

Я попытался запустить этот пример кода из документации autocert, изменив его на использование моего домена:

package main

import (
    "fmt"
    "log"
    "net/http"

    "golang.org/x/crypto/acme/autocert"
)

func main() {
    mux := http.NewServeMux()
    mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        fmt.Fprintf(w, "Hello, TLS user! Your config: %+v", r.TLS)
    })
    log.Fatal(http.Serve(autocert.NewListener("mydomain.work"), mux))
}

В браузере я увидел ошибку CloudFlare, сообщающую Error 525 SSL handshake failed. Вывод программы Go был

2020/02/27 00:44:10 http: TLS handshake error from 172.69.22.250:26624: acme/autocert: unable to satisfy "https://acme-v02.api.letsencrypt.org/acme/authz-v3/3031814088" for domain "mydomain.work": no viable challenge type found

Проблема сохранялась, когда я отключил функцию CloudTlare Always Use HTTPS, которая блокировала вызов http-01. Это также сохранялось, когда я отключал TLS в консоли CloudFlare. Наконец-то я заработал, вернувшись к BaseI c DNS NameCheap.

Мне нравится функциональность CloudFlare, поэтому у меня возникает вопрос: как заставить пакет autocert Go работать с CloudFlare? Или это не нужно, потому что я мог бы просто использовать самозаверяющий сертификат с параметром полного шифрования CloudFlare?

1 Ответ

0 голосов
/ 27 февраля 2020

В CloudFlare, go в SSL / TLS, а затем на вкладке Исходный сервер. Нажмите кнопку Создать сертификат, и они сделают его для вас бесплатно. Вы можете использовать это для работы с настройками полного (строгого) шифрования.

CloudFlare console

...