2016-06-16 2 views
0

Я использую Playframework для решения API, которое я создал. Нет HTML-страниц, обслуживаемых моим сервером, только ответы на запросы API в JSON. Я знаю, что playframework может поддерживать https с помощью собственных ключей, используя Dhttps.port=9443. В документации написано, что это должно использоваться только в режиме Dev.HTTPS для API: в производстве

Так как у меня нет веб-страниц (и, следовательно, нет предупреждений о браузерах для самостоятельных подписей), и я беспокоюсь только о шифровании для вызовов API, могу ли я использовать это для производства тоже? или я что-то упускаю?

ответ

1

В документации указано, что если вы не предоставите какой-либо сертификат при запуске приложения в режиме prod, Play будет генерировать один и запустить его. Это обескураживает, потому что сертификат - это всего лишь случайный материал, на который у вас нет никакого контроля.

При использовании частного сертификата, если вы открываете URL-адрес в браузере, он предупреждает пользователя о «ненадежном сертификате». Поскольку это не относится к вам, и если ваши пользователи веб-сервера ограничены ограниченным набором, я думаю, вы можете использовать его в режиме prod. Пожалуйста, рассмотрите другие плюсы и минусы этого, прежде чем продолжить.

Если вы хотите продолжить работу, вы всегда можете создать собственный собственный сертификат и использовать его для запуска приложения. Команды по Play документации для этого:

keytool -genkeypair -v \ 
-alias cert \ 
-dname "CN=<CHANGE ME>, OU=<CHANGE ME>, O=<CHANGE ME>, L=<CHANGE ME>, ST=<CHANGE ME>, C=IN" \ 
-keystore cert.jks \ 
-keypass a1AhzIabP1 \ 
-storepass a1AhzIabP1 \ 
-keyalg RSA \ 
-keysize 4096 \ 
-ext KeyUsage:critical="keyCertSign" \ 
-ext BasicConstraints:critical="ca:true" \ 
-validity 9999 

Проверьте сертификат с помощью этой команды

keytool -list -v \ 
-keystore conf/cert.jks \ 
-storepass a1AhzIabP1 

Затем настройте его в application.conf как это

https.port=9443 
play.server.https.keyStore.path="conf/cert.jks" # relative path to your certificate 
play.server.https.keyStore.password="a1AhzIabP1" 

Надеется, что это помогает!

+0

Спасибо за ваши предложения. Знаете ли вы о каких-либо других плюсах и минусах использования частного сертификата? – user2460477

Смежные вопросы