Saturday, August 5, 2017

Spring Boot Uygulamalarının SSL Yapılandırması

Spring Boot uygulamalarında yapılandırma dosyası varsayılan olarak application.properties dosyasıdır. Spring Boot uygulamalarının SSL yapılandırmasını da application.properties dosyasından gerçekleştireceğiz. Sertifika otaritesinden aldığımız sertifikaları PKCS12 formatında Anahtar Deposu  (=KeyStore) dosyasında saklıyoruz. PKCS12kapalı anahtar ve sertifikaları depolamak ve uygulamalar tarafından erişilebilmesini sağlamak amacıyla geliştirlen dilden ve platformdan bağımsız bir saklama kabı standardıdır. PKCS12 dosyasını oluşturmak amacıyla aşağıdaki komutu çalıştırmanız gerekir:

openssl pkcs12 -export -inkey example.com.key -in example.com.cer -name mywebapp -out /tmp/keystore.p12 -password

Bu komut, parametre olarak kapalı anahtar (example.com.key) ve sertifikayı (example.com.cer) alıyor ve PKCS12 standardına uygun olarak /tmp/keystore.p12 isimli dosyada saklıyor.  Komutu çalıştırdığımızda bizden bir parola isteyecektir. Parola olarak Secret_1234 karakter katarını girmiş olalım. Bu parola ile uygulamalar Anahtar Deposundaki anahtar ya da sertifikayı okuyabilirler. Anahtar  Deposunda çok sayıda anahtar ve sertifika saklamak mümkündür. Bu nedenle Anahtar ve sertifikayı saklarken bir etiket atıyoruz. Örneğimizde, Anahtar Deposunda sakladığımız kapalı anahtar ve sertifikaya mywebapp etiketini verdik. Sonuç olarak, uygulamalar, Anahtar Deposunda sakladığımız anahtarı ve sertifikayı mywebapp etiketi ve Secret_1234 parolası ile okuyabilirler.

Artık Spring Boot uygulamasında SSL yapılandırması için application.properties dosyası içerisine gerekli tanımlamaları yapabiliriz:

server.ssl.key-store=/tmp/keystore.p12
server.ssl.key-store-password=Secret_1234
server.ssl.keyStoreType=PKCS12
server.ssl.keyAlias=mywebapp

Spring Boot uygulamalarından bağımsız olarak Java uygulamalarının sertifika dosyasını okuyabilmeleri için Java Sanal Makinasına aşağıdaki parametreleri geçirmek gerekir:

export JAVA_OPTS="-Dserver.ssl.keyStoreType=PKCS12 -Djavax.net.ssl.trustStoreType=jks -Djavax.net.ssl.keyStoreType=pkcs12"

No comments:

Post a Comment