У меня есть проект golang, который предоставляет некоторые конечные точки REST API через SSL.Я обслуживаю вещи по https с помощью этой строки кода:
router := mux.NewRouter() // mux is from the gorilla mux library
headersOk := handlers.AllowedHeaders([]string{"Accept","Accept-Encoding","Content-Length","Content-Type",
"Authorization","Organization"})
originsOk := handlers.AllowedOrigins([]string{"*"})
methodsOk := handlers.AllowedMethods([]string{"GET", "HEAD", "POST", "PUT", "DELETE", "OPTIONS"})
http.ListenAndServeTLS(":8000", "path/to/example.cert","path/to/example.com.key",handlers.CORS(originsOk, headersOk, methodsOk)(router)
Когда я захожу на https://example.com:8000/some-endpoint
с помощью веб-браузера, все загружается нормально, и я вижу красивый зеленый значок замка в моей адресной строке.Но когда я пытаюсь подключиться к нему с помощью программного обеспечения Postman, Postman просто говорит, что не может получить никакого ответа, пока я не отключу «Проверка SSL» в настройках.
Что-то не так с тем, как я инициализирую свой golanghttp server?
Редактировать Используемый мной сертификат является коммерческим сертификатом, подтвержденным Sectigo Limited, который поддерживает поддомены подстановочных знаков.Эта конечная точка API в действительности используется, и другие люди с приложениями ReactJS и Angular JS успешно используют данные из этих конечных точек.
Редактировать 2 Я просмотрел свои сертификаты.У меня есть несколько файлов.Мой /path/to/example.cert
на самом деле является объединением этих файлов:
- example.com.ca-bundle
- example.com.crt
- example.com.csr
- example.com.key
Между каждым сертификатом в /path/to/example.cert
я вижу что-то вроде:
-----END CERTIFICATE REQUEST-----^@^@^@^@^@^@.....example.com.key^@^@^@^@^@^@^@^@^@....-----BEGIN PRIVATE KEY-----
Я не уверенесли эти ^@^@^@^@^@
символы должны быть там?Я попытался удалить их и перезапустить мой http-сервер golang, но это не имело никакого значения.
Когда я попытался проверить свои https://example.com:8000
в ssl labs , он сказал, что порт 8000 являетсяне поддерживается.Большинство API REST размещены в одном домене, но с разными номерами портов.