{"id":32509,"date":"2025-10-22T15:32:00","date_gmt":"2025-10-22T12:32:00","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/docker-run-ile-guvenli-keycloak-kurulumu-ssl-sertifikalariyla-adim-adim-rehber\/"},"modified":"2025-10-22T15:32:00","modified_gmt":"2025-10-22T12:32:00","slug":"docker-run-ile-guvenli-keycloak-kurulumu-ssl-sertifikalariyla-adim-adim-rehber","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/docker-run-ile-guvenli-keycloak-kurulumu-ssl-sertifikalariyla-adim-adim-rehber\/","title":{"rendered":"Docker Run ile G\u00fcvenli Keycloak Kurulumu: SSL Sertifikalar\u0131yla Ad\u0131m Ad\u0131m Rehber"},"content":{"rendered":"<p><body><\/p>\n<p>Kimlik ve eri\u015fim y\u00f6netimi modern uygulamalar\u0131n vazge\u00e7ilmez bir par\u00e7as\u0131d\u0131r ve bu alanda Keycloak g\u00fc\u00e7l\u00fc bir a\u00e7\u0131k kaynak \u00e7\u00f6z\u00fcm sunar. Ancak, Keycloak&#8217;u Docker \u00fczerinde \u00e7al\u0131\u015ft\u0131r\u0131rken g\u00fcvenli\u011fi sa\u011flamak, \u00f6zellikle hassas verilerin iletimi s\u00f6z konusu oldu\u011funda kritik \u00f6neme sahiptir. Peki, Docker run komutunu kullanarak SSL sertifikalar\u0131yla g\u00fcvenli bir Keycloak kurulumunu ad\u0131m ad\u0131m nas\u0131l ger\u00e7ekle\u015ftirebiliriz? Bu rehberde, \u00fcretim ortam\u0131na haz\u0131r, g\u00fcvenli bir Keycloak \u00f6rne\u011fini Docker konteynerlerinde nas\u0131l hayata ge\u00e7irece\u011finizi, SSL\/TLS \u015fifrelemesinin t\u00fcm detaylar\u0131yla birlikte ele alaca\u011f\u0131z.<\/p>\n<p>Dijital d\u00fcnyada kimlik ve eri\u015fim y\u00f6netimi, uygulamalar\u0131n ve verilerin korunmas\u0131 a\u00e7\u0131s\u0131ndan merkezi bir rol oynamaktad\u0131r. Keycloak, bu alanda lider a\u00e7\u0131k kaynak \u00e7\u00f6z\u00fcmlerden biri olarak \u00f6ne \u00e7\u0131kar; kullan\u0131c\u0131 kimlik do\u011frulama, yetkilendirme, tek oturum a\u00e7ma (SSO) ve sosyal kimlik sa\u011flay\u0131c\u0131 entegrasyonu gibi geni\u015f bir yelpazede hizmetler sunar. Web uygulamalar\u0131, mobil uygulamalar ve API&#8217;ler i\u00e7in g\u00fcvenli bir kimlik katman\u0131 olu\u015fturmak isteyen geli\u015ftiriciler ve kurumlar i\u00e7in Keycloak, esnekli\u011fi ve geni\u015f \u00f6zellik setleriyle cazip bir se\u00e7enektir. Ancak, Keycloak&#8217;un sundu\u011fu bu g\u00fc\u00e7l\u00fc \u00f6zellikler, do\u011fru g\u00fcvenlik \u00f6nlemleri al\u0131nmad\u0131\u011f\u0131nda potansiyel riskleri de beraberinde getirebilir. \u00d6zellikle kullan\u0131c\u0131 kimlik bilgileri, oturum token&#8217;lar\u0131 ve yetkilendirme kodlar\u0131 gibi hassas verilerin a\u011f \u00fczerinden iletimi s\u0131ras\u0131nda bu riskler en \u00fcst d\u00fczeye \u00e7\u0131kar.<\/p>\n<p>\u0130\u015fte bu noktada SSL\/TLS (Secure Sockets Layer \/ Transport Layer Security) devreye girer. SSL\/TLS, internet \u00fczerindeki veri trafi\u011fini \u015fifreleyerek gizlili\u011fi, veri b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc ve sunucu kimlik do\u011frulamas\u0131n\u0131 sa\u011flamak i\u00e7in kullan\u0131lan standart bir \u015fifreleme protokol\u00fcd\u00fcr. Bir kullan\u0131c\u0131 web taray\u0131c\u0131s\u0131 \u00fczerinden Keycloak&#8217;a eri\u015fti\u011finde veya bir uygulama Keycloak ile ileti\u015fim kurdu\u011funda, bu ba\u011flant\u0131n\u0131n SSL\/TLS ile korunmas\u0131 hayati \u00f6neme sahiptir. SSL\/TLS sertifikalar\u0131, sunucunun kimli\u011fini do\u011frular ve istemcinin ger\u00e7ekten do\u011fru Keycloak sunucusuyla ileti\u015fim kurdu\u011fundan emin olmas\u0131n\u0131 sa\u011flar. Ayr\u0131ca, HTTPS (HTTP Secure) protokol\u00fcn\u00fc kullanarak, istemci ile sunucu aras\u0131nda aktar\u0131lan t\u00fcm verilerin \u015fifrelenmesini garanti eder. Bu \u015fifreleme, araya giren k\u00f6t\u00fc niyetli ki\u015filerin (man-in-the-middle sald\u0131r\u0131lar\u0131) veri paketlerini dinlemesini veya de\u011fi\u015ftirmesini engeller.<\/p>\n<p>G\u00fcvenli bir Keycloak kurulumu i\u00e7in SSL\/TLS&#8217;nin neden bu kadar kritik oldu\u011funu birka\u00e7 temel ba\u015fl\u0131kta \u00f6zetleyebiliriz:<\/p>\n<ul>\n<li><strong>Veri Gizlili\u011fi:<\/strong> Kullan\u0131c\u0131 ad\u0131, \u015fifre, e-posta gibi hassas bilgiler, \u015fifreleme sayesinde yetkisiz eri\u015fime kar\u015f\u0131 korunur. Bu, \u00f6zellikle kamuya a\u00e7\u0131k Wi-Fi a\u011flar\u0131 gibi g\u00fcvensiz ortamlarda veri s\u0131z\u0131nt\u0131lar\u0131n\u0131 \u00f6nler.<\/li>\n<li><strong>Veri B\u00fct\u00fcnl\u00fc\u011f\u00fc:<\/strong> SSL\/TLS, aktar\u0131lan verilerin \u00fc\u00e7\u00fcnc\u00fc partiler taraf\u0131ndan de\u011fi\u015ftirilmedi\u011fini garanti eder. Bu, oturum token&#8217;lar\u0131n\u0131n veya yetkilendirme kodlar\u0131n\u0131n yolda manip\u00fcle edilmesini engeller.<\/li>\n<li><strong>Sunucu Kimlik Do\u011frulama:<\/strong> SSL sertifikalar\u0131, istemcinin ba\u011flant\u0131 kurdu\u011fu sunucunun ger\u00e7ekten iddia etti\u011fi sunucu oldu\u011funu do\u011frular. Bu, kimlik av\u0131 (phishing) sald\u0131r\u0131lar\u0131na ve sahte sunuculara kar\u015f\u0131 koruma sa\u011flar.<\/li>\n<li><strong>Uyumluluk ve G\u00fcven:<\/strong> Modern taray\u0131c\u0131lar ve uygulamalar, HTTPS \u00fczerinden g\u00fcvenli ba\u011flant\u0131lar\u0131 zorunlu tutar. G\u00fcvenli olmayan (HTTP) ba\u011flant\u0131lar genellikle uyar\u0131larla kar\u015f\u0131la\u015f\u0131r ve kullan\u0131c\u0131lar taraf\u0131ndan g\u00fcvensiz olarak alg\u0131lan\u0131r. Ayr\u0131ca, bir\u00e7ok reg\u00fclasyon ve uyumluluk standard\u0131 (GDPR, PCI DSS vb.) hassas verilerin \u015fifrelenmesini zorunlu k\u0131lar.<\/li>\n<li><strong>API G\u00fcvenli\u011fi:<\/strong> Keycloak, OAuth 2.0 ve OpenID Connect (OIDC) gibi protokoller arac\u0131l\u0131\u011f\u0131yla uygulamalar\u0131n\u0131zla ileti\u015fim kurar. Bu protokollerin g\u00fcvenli\u011fi, temelinde SSL\/TLS \u015fifrelemesine dayan\u0131r. E\u011fer Keycloak ile uygulamalar\u0131n\u0131z aras\u0131ndaki ileti\u015fim g\u00fcvenli de\u011filse, yetkilendirme kodlar\u0131 ve eri\u015fim token&#8217;lar\u0131 kolayca ele ge\u00e7irilebilir.<\/li>\n<\/ul>\n<p>Dolay\u0131s\u0131yla, Keycloak&#8217;u Docker \u00fczerinde \u00e7al\u0131\u015ft\u0131r\u0131rken, Docker konteynerinin do\u011fru SSL\/TLS sertifikalar\u0131yla yap\u0131land\u0131r\u0131lmas\u0131 sadece bir &#8220;g\u00fczel olur&#8221; de\u011fil, bir &#8220;olmazsa olmaz&#8221; gerekliliktir. Bu makale boyunca, bu kritik g\u00fcvenlik katman\u0131n\u0131 Docker run komutlar\u0131yla nas\u0131l kolayca entegre edece\u011fimizi ad\u0131m ad\u0131m ele alaca\u011f\u0131z. Bu sayede, hem geli\u015ftirme hem de \u00fcretim ortamlar\u0131n\u0131zda g\u00fcvenli ve kararl\u0131 bir kimlik y\u00f6netim sistemi kurabileceksiniz.<\/p>\n<h2>Docker Run ile Keycloak: Temel Kurulum ve SSL \u00d6ncesi Haz\u0131rl\u0131klar Nas\u0131l Yap\u0131l\u0131r?<\/h2>\n<p>Keycloak&#8217;u Docker \u00fczerinde \u00e7al\u0131\u015ft\u0131rmak, h\u0131zl\u0131 kurulum, kolay ta\u015f\u0131nabilirlik ve kaynak izolasyonu gibi bir\u00e7ok avantaj sunar. SSL sertifikalar\u0131n\u0131 entegre etmeden \u00f6nce, Keycloak&#8217;un temel bir Docker kurulumunu anlamak ve gerekli \u00f6n haz\u0131rl\u0131klar\u0131 yapmak \u00f6nemlidir. Bu b\u00f6l\u00fcm, Keycloak&#8217;u Docker ile nas\u0131l ba\u015flataca\u011f\u0131n\u0131z\u0131 ve SSL entegrasyonu i\u00e7in hangi dosya ve dizin yap\u0131land\u0131rmalar\u0131na ihtiyac\u0131n\u0131z oldu\u011funu detayland\u0131racakt\u0131r.<\/p>\n<h3>Keycloak Docker \u0130maj\u0131n\u0131 \u00c7ekme ve \u0130lk \u00c7al\u0131\u015ft\u0131rma<\/h3>\n<p>Keycloak&#8217;un resmi Docker imaj\u0131 Docker Hub&#8217;da mevcuttur ve <code>docker pull<\/code> komutu ile kolayca indirilebilir. Tercih edilen s\u00fcr\u00fcm\u00fc belirterek, belirli bir kararl\u0131 s\u00fcr\u00fcm\u00fc kullanmak iyi bir uygulamad\u0131r:<\/p>\n<pre><code>\ndocker pull jboss\/keycloak:18.0.0\n<\/pre>\n<p><\/code><\/p>\n<p>Yukar\u0131daki komut, Keycloak'un 18.0.0 s\u00fcr\u00fcm\u00fcn\u00fc yerel sisteminize \u00e7ekecektir. S\u00fcr\u00fcm numaras\u0131, ihtiya\u00e7lar\u0131n\u0131za g\u00f6re de\u011fi\u015fiklik g\u00f6sterebilir. \u0130ndirme i\u015flemi tamamland\u0131ktan sonra, Keycloak'u bir Docker konteynerinde ba\u015flatabiliriz. Basit bir \u00e7al\u0131\u015ft\u0131rma komutu genellikle \u015f\u00f6yledir:<\/p>\n<pre><code>\ndocker run -p 8080:8080 -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=password jboss\/keycloak:18.0.0 start-dev\n<\/pre>\n<p><\/code><\/p>\n<p>Bu komutun detaylar\u0131na inelim:<\/p>\n<ul>\n<li><code>-p 8080:8080<\/code>: Konteynerin 8080 portunu ana makinenin 8080 portuna e\u015fler. Keycloak varsay\u0131lan olarak 8080 portunda HTTP \u00fczerinden \u00e7al\u0131\u015f\u0131r.<\/li>\n<li><code>-e KEYCLOAK_ADMIN=admin<\/code>: Keycloak y\u00f6netim konsoluna eri\u015fmek i\u00e7in kullan\u0131lacak y\u00f6netici kullan\u0131c\u0131 ad\u0131n\u0131 (admin) ayarlar.<\/li>\n<li><code>-e KEYCLOAK_ADMIN_PASSWORD=password<\/code>: Y\u00f6netici kullan\u0131c\u0131n\u0131n \u015fifresini (password) ayarlar. Bu \u015fifreyi \u00fcretim ortam\u0131nda mutlaka daha karma\u015f\u0131k ve g\u00fcvenli bir \u015fifre ile de\u011fi\u015ftirmelisiniz.<\/li>\n<li><code>jboss\/keycloak:18.0.0<\/code>: Kullan\u0131lacak Docker imaj\u0131n\u0131n ad\u0131n\u0131 ve s\u00fcr\u00fcm\u00fcn\u00fc belirtir.<\/li>\n<li><code>start-dev<\/code>: Keycloak'u geli\u015ftirme modunda ba\u015flat\u0131r. Bu mod, baz\u0131 g\u00fcvenlik kontrollerini atlayarak h\u0131zl\u0131 ba\u015flang\u0131\u00e7 sa\u011flar ancak \u00fcretim ortam\u0131 i\u00e7in uygun de\u011fildir. \u00dcretimde <code>start<\/code> komutu kullan\u0131lmal\u0131 ve veritaban\u0131 ile SSL gibi konfig\u00fcrasyonlar do\u011fru \u015fekilde yap\u0131lmal\u0131d\u0131r.<\/li>\n<\/ul>\n<p>Bu komutu \u00e7al\u0131\u015ft\u0131rd\u0131ktan sonra, taray\u0131c\u0131n\u0131zdan <code>http:\/\/localhost:8080<\/code> adresine giderek Keycloak y\u00f6netim paneline eri\u015febilmeniz gerekir. Ancak dikkat, bu ba\u011flant\u0131 \u015fu an i\u00e7in g\u00fcvenli de\u011fildir ve SSL\/TLS \u015fifrelemesi kullanmamaktad\u0131r. Bir sonraki ad\u0131mlar\u0131m\u0131z, bu ba\u011flant\u0131y\u0131 g\u00fcvenli hale getirmek \u00fczerine yo\u011funla\u015facakt\u0131r.<\/p>\n<h3>SSL Entegrasyonu \u0130\u00e7in \u00d6n Haz\u0131rl\u0131klar: Sertifikalar ve Keystore<\/h3>\n<p>Keycloak'u SSL ile \u00e7al\u0131\u015ft\u0131rman\u0131n temelinde, uygun sertifikalara sahip olmak ve bunlar\u0131 Keycloak'un anlayabilece\u011fi bir formatta sunmak yatar. Genellikle Keycloak (ve arkas\u0131ndaki WildFly\/Undertow web sunucusu), sertifikalar\u0131 bir Java Keystore (JKS) veya PKCS#12 (.p12) dosyas\u0131nda bekler. Bu dosyalar, hem \u00f6zel anahtar\u0131 (private key) hem de SSL sertifikas\u0131n\u0131 (public certificate) i\u00e7erir.<\/p>\n<p>SSL sertifikalar\u0131n\u0131 edinme ve haz\u0131rlama s\u00fcreci iki ana yolu takip edebilir:<\/p>\n<ol>\n<li><strong>Geli\u015ftirme Ortam\u0131 \u0130\u00e7in Kendinden \u0130mzal\u0131 (Self-Signed) Sertifikalar:<\/strong> H\u0131zl\u0131 testler veya dahili geli\u015ftirme ortamlar\u0131 i\u00e7in kendinden imzal\u0131 sertifikalar olu\u015fturabilirsiniz. Bu sertifikalar, g\u00fcvenilir bir Sertifika Yetkilisi (CA) taraf\u0131ndan do\u011frulanmad\u0131\u011f\u0131 i\u00e7in taray\u0131c\u0131lar taraf\u0131ndan \"g\u00fcvenli de\u011fil\" uyar\u0131s\u0131 verir, ancak \u015fifreleme i\u015flevselli\u011fini test etmek i\u00e7in yeterlidir.<\/li>\n<li><strong>\u00dcretim Ortam\u0131 \u0130\u00e7in G\u00fcvenilir Sertifika Yetkilisi (CA) Taraf\u0131ndan \u0130mzalanm\u0131\u015f Sertifikalar:<\/strong> \u00dcretim ortamlar\u0131nda mutlaka Let's Encrypt, DigiCert, GlobalSign gibi g\u00fcvenilir bir CA taraf\u0131ndan imzalanm\u0131\u015f sertifikalar kullan\u0131lmal\u0131d\u0131r. Bu sertifikalar, taray\u0131c\u0131lar taraf\u0131ndan otomatik olarak g\u00fcvenilir kabul edilir ve herhangi bir uyar\u0131 g\u00f6stermez.<\/li>\n<\/ol>\n<p>Bu makalede, \u00f6ncelikle kendinden imzal\u0131 sertifikalar\u0131n nas\u0131l olu\u015fturulaca\u011f\u0131n\u0131 ve ard\u0131ndan bunlar\u0131n Keycloak'a nas\u0131l entegre edilece\u011fini ele alaca\u011f\u0131z. \u00dcretim ortam\u0131 i\u00e7in CA sertifikalar\u0131 da benzer bir mant\u0131kla Keystore'a aktar\u0131labilir.<\/p>\n<p>Bir adet anahtar deposu (keystore) ve bir adet g\u00fcven deposu (truststore) dosyas\u0131na ihtiyac\u0131m\u0131z olacak. Keystore, Keycloak sunucusunun kendi kimli\u011fini do\u011frulamak i\u00e7in kullanaca\u011f\u0131 \u00f6zel anahtar ve sertifika \u00e7iftini i\u00e7erirken, truststore ise Keycloak'un harici servislere (\u00f6rne\u011fin bir LDAP sunucusu veya ba\u015fka bir OIDC sa\u011flay\u0131c\u0131s\u0131) ba\u011flan\u0131rken onlar\u0131n kimli\u011fini do\u011frulamak i\u00e7in g\u00fcvenece\u011fi sertifikalar\u0131 bar\u0131nd\u0131r\u0131r.<\/p>\n<aside class=\"expert-tip\">\n    \u00d6zel anahtar\u0131n\u0131z\u0131n ve sertifikalar\u0131n\u0131z\u0131n g\u00fcvenli\u011fini sa\u011flamak i\u00e7in, olu\u015fturdu\u011funuz bu dosyalar\u0131 asla a\u00e7\u0131k\u00e7a payla\u015fmay\u0131n ve eri\u015fim izinlerini k\u0131s\u0131tlay\u0131n. Keystore dosyalar\u0131n\u0131n \u015fifresi mutlaka g\u00fc\u00e7l\u00fc olmal\u0131d\u0131r.<br \/>\n<\/aside>\n<p>Sertifikalar\u0131 haz\u0131rlad\u0131ktan sonra, bunlar\u0131 Docker konteynerine nas\u0131l monte edece\u011fimiz ve Keycloak'u bu sertifikalar\u0131 kullanmaya nas\u0131l ikna edece\u011fimiz bir sonraki ad\u0131m olacakt\u0131r. Bu, Docker'\u0131n volume (birim) mekanizmas\u0131n\u0131 kullanarak ana makinedeki dosyalar\u0131 konteyner i\u00e7ine kopyalamak ve Keycloak'un ba\u015flang\u0131\u00e7 ayarlar\u0131n\u0131 (\u00f6rne\u011fin Java System Properties) uygun \u015fekilde yap\u0131land\u0131rmakla m\u00fcmk\u00fcn olacakt\u0131r. Bu \u00f6n haz\u0131rl\u0131klar, g\u00fcvenli bir Keycloak ortam\u0131n\u0131n temelini olu\u015fturur ve sorunsuz bir SSL entegrasyonu i\u00e7in kritik \u00f6neme sahiptir.<\/p>\n<h2>Kendinden \u0130mzal\u0131 SSL Sertifikas\u0131 Olu\u015fturma ve Keycloak \u0130\u00e7in Keystore Haz\u0131rl\u0131\u011f\u0131 Nas\u0131l Yap\u0131l\u0131r?<\/h2>\n<p>Geli\u015ftirme ve test ortamlar\u0131 i\u00e7in h\u0131zl\u0131ca bir SSL sertifikas\u0131 edinmek gerekti\u011finde, kendinden imzal\u0131 (self-signed) sertifikalar pratik bir \u00e7\u00f6z\u00fcm sunar. Bu sertifikalar, resmi bir Sertifika Yetkilisi (CA) taraf\u0131ndan imzalanmad\u0131\u011f\u0131 i\u00e7in taray\u0131c\u0131lar taraf\u0131ndan \"g\u00fcvenli de\u011fil\" uyar\u0131s\u0131 verse de, SSL\/TLS \u015fifrelemesinin i\u015flevselli\u011fini test etmek i\u00e7in tamamen yeterlidir. Bu b\u00f6l\u00fcmde, OpenSSL arac\u0131n\u0131 kullanarak kendinden imzal\u0131 bir sertifika \u00e7iftini nas\u0131l olu\u015fturaca\u011f\u0131n\u0131z\u0131 ve Keycloak'un anlayaca\u011f\u0131 bir Java Keystore (JKS veya PKCS#12) dosyas\u0131na nas\u0131l d\u00f6n\u00fc\u015ft\u00fcrece\u011finizi ad\u0131m ad\u0131m a\u00e7\u0131klayaca\u011f\u0131z.<\/p>\n<h3>Ad\u0131m 1: OpenSSL ile \u00d6zel Anahtar ve Sertifika Olu\u015fturma<\/h3>\n<p>\u0130lk olarak, bir \u00f6zel anahtar (.key) ve bir sertifika (.crt) dosyas\u0131 olu\u015fturaca\u011f\u0131z. Bu i\u015flem i\u00e7in OpenSSL kullanaca\u011f\u0131z. Komut sat\u0131r\u0131n\u0131z\u0131 a\u00e7\u0131n ve a\u015fa\u011f\u0131daki komutu \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code>\nopenssl req -x509 -newkey rsa:2048 -keyout keycloak.key -out keycloak.crt -days 365 -nodes -subj \"\/CN=localhost\"\n<\/pre>\n<p><\/code><\/p>\n<p>Bu komutun parametrelerini inceleyelim:<\/p>\n<ul>\n<li><code>openssl req<\/code>: Yeni bir sertifika imzalama iste\u011fi (CSR) veya kendinden imzal\u0131 bir sertifika olu\u015fturmak i\u00e7in kullan\u0131l\u0131r.<\/li>\n<li><code>-x509<\/code>: Bir CSR yerine kendinden imzal\u0131 bir sertifika olu\u015fturulaca\u011f\u0131n\u0131 belirtir.<\/li>\n<li><code>-newkey rsa:2048<\/code>: Yeni bir RSA anahtar\u0131 olu\u015fturur (2048 bit uzunlu\u011funda). Bu anahtar, <code>keycloak.key<\/code> dosyas\u0131na kaydedilecektir.<\/li>\n<li><code>-keyout keycloak.key<\/code>: Olu\u015fturulan \u00f6zel anahtar\u0131n dosya ad\u0131n\u0131 belirtir.<\/li>\n<li><code>-out keycloak.crt<\/code>: Olu\u015fturulan sertifikan\u0131n dosya ad\u0131n\u0131 belirtir.<\/li>\n<li><code>-days 365<\/code>: Sertifikan\u0131n ge\u00e7erlilik s\u00fcresini g\u00fcn cinsinden ayarlar (bu \u00f6rnekte 1 y\u0131l).<\/li>\n<li><code>-nodes<\/code>: \u00d6zel anahtar\u0131n \u015fifrelenmeyece\u011fini belirtir. Bu, otomatik ba\u015flang\u0131\u00e7 senaryolar\u0131 i\u00e7in uygundur, ancak \u00fcretim ortam\u0131nda anahtar\u0131n \u015fifrelenmesi daha g\u00fcvenlidir.<\/li>\n<li><code>-subj \"\/CN=localhost\"<\/code>: Sertifikan\u0131n konu (Subject) alan\u0131n\u0131 do\u011frudan ayarlar. <code>CN<\/code> (Common Name) olarak <code>localhost<\/code> kullanmak, yerel testler i\u00e7in \u00f6nemlidir. E\u011fer Keycloak'u bir alan ad\u0131 (\u00f6rne\u011fin <code>keycloak.example.com<\/code>) \u00fczerinden eri\u015filebilir hale getirecekseniz, <code>CN<\/code> de\u011ferini bu alan ad\u0131na ayarlamal\u0131s\u0131n\u0131z.<\/li>\n<\/ul>\n<p>Bu komut ba\u015far\u0131l\u0131 bir \u015fekilde \u00e7al\u0131\u015ft\u0131r\u0131ld\u0131ktan sonra, bulundu\u011funuz dizinde <code>keycloak.key<\/code> (\u00f6zel anahtar\u0131n\u0131z) ve <code>keycloak.crt<\/code> (kamu sertifikan\u0131z) ad\u0131nda iki dosya olu\u015facakt\u0131r.<\/p>\n<h3>Ad\u0131m 2: \u00d6zel Anahtar ve Sertifikay\u0131 PKCS#12 Format\u0131na D\u00f6n\u00fc\u015ft\u00fcrme<\/h3>\n<p>Keycloak'un (ve Java uygulamalar\u0131n\u0131n genel olarak) sertifikalar\u0131 y\u00f6netmek i\u00e7in tercih etti\u011fi format genellikle Java Keystore (JKS) veya PKCS#12'dir. PKCS#12, hem \u00f6zel anahtar\u0131 hem de sertifikay\u0131 tek bir dosyada saklayabilen daha modern bir formatt\u0131r. OpenSSL ile olu\u015fturdu\u011fumuz <code>.key<\/code> ve <code>.crt<\/code> dosyalar\u0131n\u0131 bir <code>.p12<\/code> dosyas\u0131na d\u00f6n\u00fc\u015ft\u00fcrelim:<\/p>\n<pre><code>\nopenssl pkcs12 -export -in keycloak.crt -inkey keycloak.key -name keycloak -out keycloak.p12 -passout pass:mypassword\n<\/pre>\n<p><\/code><\/p>\n<p>Bu komutun parametreleri \u015funlard\u0131r:<\/p>\n<ul>\n<li><code>openssl pkcs12 -export<\/code>: PKCS#12 format\u0131nda bir dosya d\u0131\u015fa aktarmak i\u00e7in kullan\u0131l\u0131r.<\/li>\n<li><code>-in keycloak.crt<\/code>: Sertifika dosyas\u0131n\u0131 belirtir.<\/li>\n<li><code>-inkey keycloak.key<\/code>: \u00d6zel anahtar dosyas\u0131n\u0131 belirtir.<\/li>\n<li><code>-name keycloak<\/code>: Keystore i\u00e7indeki anahtar \u00e7iftine bir takma ad verir. Bu takma ad genellikle anahtar deposu eri\u015fimi i\u00e7in kullan\u0131l\u0131r.<\/li>\n<li><code>-out keycloak.p12<\/code>: Olu\u015fturulacak PKCS#12 dosyas\u0131n\u0131n ad\u0131n\u0131 belirtir.<\/li>\n<li><code>-passout pass:mypassword<\/code>: PKCS#12 dosyas\u0131n\u0131n \u015fifresini (mypassword) ayarlar. Bu \u015fifre, Keycloak'u ba\u015flat\u0131rken kullan\u0131lacakt\u0131r ve \u00fcretim ortam\u0131nda \u00e7ok g\u00fc\u00e7l\u00fc bir \u015fifre olmal\u0131d\u0131r.<\/li>\n<\/ul>\n<p>Bu ad\u0131mdan sonra, <code>keycloak.p12<\/code> adl\u0131 bir dosyan\u0131z olacak. Bu dosya, Keycloak'un SSL ba\u011flant\u0131lar\u0131 kurmak i\u00e7in ihtiya\u00e7 duydu\u011fu t\u00fcm sertifika bilgilerini i\u00e7erir.<\/p>\n<h3>Ad\u0131m 3: Keycloak \u0130\u00e7in Sertifika Dizin Yap\u0131s\u0131<\/h3>\n<p>Keycloak'un bu sertifika dosyas\u0131n\u0131 bulabilmesi i\u00e7in, Docker konteyneri i\u00e7inde belirli bir yere kopyalanmas\u0131 gerekir. Genellikle Keycloak konteynerinde <code>\/opt\/keycloak\/conf\/<\/code> dizini sertifika ve yap\u0131land\u0131rma dosyalar\u0131 i\u00e7in uygun bir konumdur. Bu nedenle, <code>keycloak.p12<\/code> dosyas\u0131n\u0131 bu dizine monte edece\u011fiz. Ana makinede, bu dosyay\u0131 kolayca y\u00f6netebilece\u011finiz bir dizinde tutmak en iyisidir, \u00f6rne\u011fin:<\/p>\n<pre><code>\nmkdir -p .\/certs\nmv keycloak.p12 .\/certs\/\n<\/pre>\n<p><\/code><\/p>\n<p>B\u00f6ylece, <code>.\/certs\/keycloak.p12<\/code> yoluyla sertifika dosyan\u0131za eri\u015febilir ve bunu Docker konteynerine ba\u011flamak i\u00e7in kullanabilirsiniz.<\/p>\n<aside class=\"expert-tip\">\n    \u00dcretim ortamlar\u0131nda, \u00f6zel anahtar ve sertifikalar\u0131n\u0131z\u0131n g\u00fcvenli\u011fini sa\u011flamak i\u00e7in <code>-nodes<\/code> parametresinden ka\u00e7\u0131nmal\u0131 ve anahtar\u0131n\u0131z\u0131 \u015fifrelemelisiniz. Ayr\u0131ca, sertifika y\u00f6netimini otomatik hale getirmek i\u00e7in Let's Encrypt ve Certbot gibi ara\u00e7lar\u0131 bir Ters Proxy (Nginx, Apache) ile kullanmak \u00e7ok daha yayg\u0131n ve \u00f6nerilen bir yakla\u015f\u0131md\u0131r. Bu, sertifika yenileme s\u00fcre\u00e7lerini basitle\u015ftirir ve g\u00fcvenlik seviyesini art\u0131r\u0131r.<br \/>\n<\/aside>\n<p>Bu haz\u0131rl\u0131klar, Keycloak'u SSL ile \u00e7al\u0131\u015ft\u0131rmak i\u00e7in gerekli olan temel sertifika dosyas\u0131n\u0131 sa\u011flam\u0131\u015f olur. Bir sonraki ad\u0131m\u0131m\u0131z, bu sertifika dosyas\u0131n\u0131 kullanarak Docker run komutu ile Keycloak'u g\u00fcvenli bir \u015fekilde ba\u015flatmakt\u0131r. Bu, Keycloak'un HTTPS \u00fczerinden eri\u015filebilir olmas\u0131n\u0131 sa\u011flayacak ve kullan\u0131c\u0131lar\u0131n\u0131z\u0131n ve uygulamalar\u0131n\u0131z\u0131n g\u00fcvenli bir ba\u011flant\u0131 \u00fczerinden kimlik do\u011frulama ve yetkilendirme i\u015flemlerini ger\u00e7ekle\u015ftirmesine olanak tan\u0131yacakt\u0131r. Unutmay\u0131n, bu kendinden imzal\u0131 sertifika sadece geli\u015ftirme ve test ama\u00e7l\u0131d\u0131r; \u00fcretimde her zaman g\u00fcvenilir bir CA taraf\u0131ndan imzalanm\u0131\u015f sertifikalar kullanmal\u0131s\u0131n\u0131z.<\/p>\n<h2>Docker Run ile SSL Sertifikal\u0131 Keycloak Nas\u0131l Kurulur? Ad\u0131m Ad\u0131m Rehber<\/h2>\n<p>\u00d6nceki b\u00f6l\u00fcmde kendinden imzal\u0131 SSL sertifikam\u0131z\u0131 (PKCS#12 format\u0131nda) haz\u0131rlad\u0131k ve Keycloak i\u00e7in gerekli \u00f6n yap\u0131land\u0131rmay\u0131 tamamlad\u0131k. \u015eimdi, bu sertifikay\u0131 Docker konteynerine entegre ederek Keycloak'u HTTPS \u00fczerinden \u00e7al\u0131\u015f\u0131r hale getirece\u011fiz. Bu ad\u0131m, hem sertifikay\u0131 Keycloak'un i\u00e7ine yerle\u015ftirmeyi hem de Keycloak'un SSL'i do\u011fru bir \u015fekilde kullanmas\u0131 i\u00e7in gerekli Java se\u00e7eneklerini ayarlamay\u0131 i\u00e7erir.<\/p>\n<h3>Ad\u0131m 1: Keycloak Konteynerini SSL Sertifikas\u0131 ile Ba\u015flatma<\/h3>\n<p>Keycloak'u SSL sertifikas\u0131yla ba\u015flatmak i\u00e7in <code>docker run<\/code> komutuna baz\u0131 ek parametreler eklememiz gerekecek. \u00d6ncelikle, ana makinedeki sertifika dosyam\u0131z\u0131 (<code>keycloak.p12<\/code>) Docker konteynerinin i\u00e7ine ba\u011flamal\u0131y\u0131z. Ard\u0131ndan, Keycloak'un hangi keystore dosyas\u0131n\u0131 kullanaca\u011f\u0131n\u0131 ve bu dosyan\u0131n \u015fifresini bildirmeliyiz. Bu bilgiler genellikle Java System Properties arac\u0131l\u0131\u011f\u0131yla <code>JAVA_OPTS<\/code> veya <code>KC_HTTPS_KEYSTORE_*<\/code> gibi ortam de\u011fi\u015fkenleriyle sa\u011flan\u0131r.<\/p>\n<p>A\u015fa\u011f\u0131daki komut, \u00f6nceki b\u00f6l\u00fcmde haz\u0131rlad\u0131\u011f\u0131m\u0131z sertifika dosyas\u0131n\u0131 kullanarak Keycloak'u SSL ile ba\u015flat\u0131r:<\/p>\n<pre><code>\ndocker run -p 8443:8443 \\\n  -e KEYCLOAK_ADMIN=admin \\\n  -e KEYCLOAK_ADMIN_PASSWORD=password \\\n  -v .\/certs\/keycloak.p12:\/opt\/keycloak\/conf\/keycloak.p12 \\\n  -e KC_HTTPS_KEYSTORE_FILE=\/opt\/keycloak\/conf\/keycloak.p12 \\\n  -e KC_HTTPS_KEYSTORE_PASSWORD=mypassword \\\n  -e KC_HOSTNAME=localhost \\\n  jboss\/keycloak:18.0.0 \\\n  start --optimized\n<\/pre>\n<p><\/code><\/p>\n<p>Bu komuttaki yeni ve \u00f6nemli parametreleri detayland\u0131ral\u0131m:<\/p>\n<ul>\n<li><code>-p 8443:8443<\/code>: Keycloak'un varsay\u0131lan HTTPS portu olan 8443'\u00fc ana makinenin 8443 portuna e\u015fler. Art\u0131k Keycloak'a HTTPS \u00fczerinden bu porttan eri\u015fece\u011fiz.<\/li>\n<li><code>-v .\/certs\/keycloak.p12:\/opt\/keycloak\/conf\/keycloak.p12<\/code>: Ana makinenizdeki <code>.\/certs\/keycloak.p12<\/code> dosyas\u0131n\u0131 Docker konteyneri i\u00e7indeki <code>\/opt\/keycloak\/conf\/keycloak.p12<\/code> yoluna ba\u011flar. Bu, Keycloak'un sertifika dosyas\u0131na eri\u015fmesini sa\u011flar.<\/li>\n<li><code>-e KC_HTTPS_KEYSTORE_FILE=\/opt\/keycloak\/conf\/keycloak.p12<\/code>: Keycloak'a HTTPS i\u00e7in kullan\u0131lacak keystore dosyas\u0131n\u0131n yolunu bildirir. Bu, Keycloak'un Undertow web sunucusunun SSL konfig\u00fcrasyonunu otomatik olarak yapmas\u0131n\u0131 sa\u011flar.<\/li>\n<li><code>-e KC_HTTPS_KEYSTORE_PASSWORD=mypassword<\/code>: Keystore dosyas\u0131n\u0131n \u015fifresini Keycloak'a iletir. Keystore dosyas\u0131n\u0131 olu\u015ftururken kulland\u0131\u011f\u0131n\u0131z \u015fifre ile ayn\u0131 olmal\u0131d\u0131r (\u00f6rne\u011fimizde \"mypassword\").<\/li>\n<li><code>-e KC_HOSTNAME=localhost<\/code>: Keycloak'un istemciler i\u00e7in bildirece\u011fi ana bilgisayar ad\u0131n\u0131 ayarlar. Kendinden imzal\u0131 sertifikam\u0131z <code>CN=localhost<\/code> ile olu\u015fturuldu\u011fu i\u00e7in bu \u00f6nemlidir. \u00dcretim ortam\u0131nda ger\u00e7ek alan ad\u0131n\u0131z\u0131 belirtmelisiniz.<\/li>\n<li><code>start --optimized<\/code>: Keycloak'u \u00fcretim modunda optimize edilmi\u015f bir \u015fekilde ba\u015flat\u0131r. Geli\u015ftirme modu yerine \u00fcretim modu kullanmak, daha iyi performans ve g\u00fcvenlik sa\u011flar.<\/li>\n<\/ul>\n<aside class=\"expert-tip\">\n    Keycloak'un yeni s\u00fcr\u00fcmlerinde (\u00f6rne\u011fin 17 ve sonras\u0131), yap\u0131land\u0131rma i\u00e7in <code>KEYCLOAK_<\/code> \u00f6nekli ortam de\u011fi\u015fkenleri yerine <code>KC_<\/code> \u00f6nekli de\u011fi\u015fkenler tercih edilmektedir. <code>start-dev<\/code> yerine <code>start --optimized<\/code> kullanmak da performans\u0131 art\u0131r\u0131r ve \u00fcretim i\u00e7in daha uygundur.<br \/>\n<\/aside>\n<h3>Ad\u0131m 2: Keycloak Y\u00f6netim Konsoluna G\u00fcvenli Eri\u015fim<\/h3>\n<p>Yukar\u0131daki komutu \u00e7al\u0131\u015ft\u0131rd\u0131ktan sonra Keycloak konteyneri ba\u015flat\u0131lacak ve HTTPS ba\u011flant\u0131lar\u0131n\u0131 dinlemeye ba\u015flayacakt\u0131r. Taray\u0131c\u0131n\u0131z\u0131 a\u00e7\u0131n ve a\u015fa\u011f\u0131daki adrese gidin:<\/p>\n<pre><code>\nhttps:\/\/localhost:8443\n<\/pre>\n<p><\/code><\/p>\n<p>Kendinden imzal\u0131 bir sertifika kulland\u0131\u011f\u0131m\u0131z i\u00e7in taray\u0131c\u0131n\u0131z b\u00fcy\u00fck ihtimalle \"Ba\u011flant\u0131n\u0131z g\u00fcvenli de\u011fil\" veya benzeri bir uyar\u0131 g\u00f6sterecektir. Bu beklenen bir durumdur. G\u00fcvenli olmayan siteye devam etme se\u00e7ene\u011fini t\u0131klayarak Keycloak y\u00f6netim konsoluna eri\u015febilirsiniz. Konsola, <code>KEYCLOAK_ADMIN<\/code> ve <code>KEYCLOAK_ADMIN_PASSWORD<\/code> ile belirtti\u011finiz kimlik bilgileriyle giri\u015f yapabilirsiniz.<\/p>\n<p>Bu a\u015famada Keycloak'unuz art\u0131k HTTPS \u00fczerinden \u00e7al\u0131\u015f\u0131yor ve t\u00fcm trafik \u015fifrelenmi\u015f durumda. Ancak, taray\u0131c\u0131n\u0131z\u0131n uyar\u0131s\u0131, bu sertifikan\u0131n bir CA taraf\u0131ndan do\u011frulanmad\u0131\u011f\u0131n\u0131 g\u00f6sterir. \u00dcretim ortam\u0131nda bu t\u00fcr bir uyar\u0131 kabul edilemez.<\/p>\n<h3>Ad\u0131m 3: \u00dcretim Ortam\u0131 \u0130\u00e7in G\u00fcvenilir CA Sertifikalar\u0131yla Entegrasyon<\/h3>\n<p>\u00dcretim ortam\u0131nda, yukar\u0131daki kendinden imzal\u0131 sertifika yerine Let's Encrypt veya ticari bir CA'dan al\u0131nm\u0131\u015f sertifikalar kullanmal\u0131s\u0131n\u0131z. S\u00fcre\u00e7 temel olarak ayn\u0131d\u0131r, ancak birka\u00e7 fark vard\u0131r:<\/p>\n<ol>\n<li><strong>Sertifika Edinme:<\/strong> Bir CA'dan SSL sertifikas\u0131 edinin. Bu genellikle bir CSR (Sertifika \u0130mzalama \u0130ste\u011fi) olu\u015fturmay\u0131 ve bunu CA'ya g\u00f6ndermeyi i\u00e7erir. CA, size sertifikan\u0131z\u0131 (genellikle <code>.crt<\/code> veya <code>.pem<\/code> format\u0131nda) ve muhtemelen bir zincir sertifikas\u0131 (CA Bundle) sa\u011flayacakt\u0131r.<\/li>\n<li><strong>PKCS#12 veya JKS Olu\u015fturma:<\/strong> Elde etti\u011finiz \u00f6zel anahtar\u0131, sunucu sertifikas\u0131n\u0131 ve CA zincirini (varsa) kullanarak bir PKCS#12 veya JKS dosyas\u0131 olu\u015fturman\u0131z gerekir. Bu i\u015flem OpenSSL veya Java'n\u0131n <code>keytool<\/code> arac\u0131yla yap\u0131labilir. \u00d6rne\u011fin, bir <code>.crt<\/code> ve <code>.key<\/code> dosyan\u0131z varsa, bunlar\u0131 \u00f6nceki \u00f6rnekteki gibi PKCS#12'ye d\u00f6n\u00fc\u015ft\u00fcrebilirsiniz. E\u011fer bir CA bundle'\u0131n\u0131z varsa, bunu da PKCS#12'ye eklemeniz gerekebilir.<\/li>\n<li><strong>Keycloak'a Entegrasyon:<\/strong> Haz\u0131rlad\u0131\u011f\u0131n\u0131z g\u00fcvenilir <code>.p12<\/code> veya <code>.jks<\/code> dosyas\u0131n\u0131 \u00f6nceki <code>docker run<\/code> komutundaki gibi Keycloak konteynerine ba\u011flay\u0131n ve <code>KC_HTTPS_KEYSTORE_FILE<\/code> ile <code>KC_HTTPS_KEYSTORE_PASSWORD<\/code> de\u011fi\u015fkenlerini do\u011fru \u015fekilde ayarlay\u0131n. <code>KC_HOSTNAME<\/code> de\u011ferini de sertifikan\u0131n verildi\u011fi tam alan ad\u0131na (FQDN) ayarlamay\u0131 unutmay\u0131n.<\/li>\n<\/ol>\n<pre><code>\n# \u00d6rnek CA sertifikas\u0131 ile PKCS#12 olu\u015fturma (varsa CA bundle dahil)\n# Bu k\u0131s\u0131m, CA'dan ald\u0131\u011f\u0131n\u0131z sertifika dosyalar\u0131na g\u00f6re de\u011fi\u015fiklik g\u00f6sterebilir.\nopenssl pkcs12 -export -in your_domain.crt -inkey your_domain.key \\\n  -certfile ca_bundle.crt -name keycloak -out keycloak_prod.p12 \\\n  -passout pass:YourProductionPassword\n<\/pre>\n<p><\/code><\/p>\n<p>Ard\u0131ndan, <code>docker run<\/code> komutunu g\u00fcncelleyerek bu yeni dosyay\u0131 kullan\u0131n:<\/p>\n<pre><code>\ndocker run -p 8443:8443 \\\n  -e KEYCLOAK_ADMIN=admin \\\n  -e KEYCLOAK_ADMIN_PASSWORD=your_secure_password \\\n  -v .\/certs\/keycloak_prod.p12:\/opt\/keycloak\/conf\/keycloak.p12 \\\n  -e KC_HTTPS_KEYSTORE_FILE=\/opt\/keycloak\/conf\/keycloak.p12 \\\n  -e KC_HTTPS_KEYSTORE_PASSWORD=YourProductionPassword \\\n  -e KC_HOSTNAME=keycloak.yourdomain.com \\\n  jboss\/keycloak:18.0.0 \\\n  start --optimized\n<\/pre>\n<p><\/code><\/p>\n<p>Bu ad\u0131mlarla, Keycloak'u hem geli\u015ftirme hem de \u00fcretim ortamlar\u0131 i\u00e7in SSL sertifikalar\u0131yla g\u00fcvenli bir \u015fekilde Docker \u00fczerinde \u00e7al\u0131\u015ft\u0131rabilirsiniz. Unutmay\u0131n, \u00fcretim ortamlar\u0131nda g\u00fcvenlik en y\u00fcksek \u00f6nceliktir ve \u015fifreler ile sertifika y\u00f6netim s\u00fcre\u00e7leri titizlikle takip edilmelidir.<\/p>\n<h2>Vaka Analizi: K\u00fc\u00e7\u00fck Bir \u015eirketin G\u00fcvenli Keycloak Ge\u00e7i\u015fi<\/h2>\n<p>Bir e-ticaret platformu olan \"Anadolu El Sanatlar\u0131\" adl\u0131 k\u00fc\u00e7\u00fck bir \u015firket, mikro hizmet mimarisine ge\u00e7i\u015f yaparken kimlik ve eri\u015fim y\u00f6netimi (IAM) konusunda ciddi zorluklar ya\u015f\u0131yordu. \u00d6nceden, her hizmetin kendi kullan\u0131c\u0131 veritaban\u0131 vard\u0131 ve bu durum, kullan\u0131c\u0131 deneyimini olumsuz etkileyen, g\u00fcvenlik a\u00e7\u0131klar\u0131na yol a\u00e7abilen ve y\u00f6netim y\u00fck\u00fcn\u00fc art\u0131ran bir karma\u015fa yarat\u0131yordu. \u015eirket, kullan\u0131c\u0131lar\u0131n tek bir hesapla t\u00fcm hizmetlere eri\u015febilece\u011fi (SSO) ve geli\u015ftiricilerin kimlik do\u011frulama s\u00fcre\u00e7leriyle u\u011fra\u015fmak zorunda kalmayaca\u011f\u0131 merkezi bir IAM \u00e7\u00f6z\u00fcm\u00fc aray\u0131\u015f\u0131ndayd\u0131. A\u00e7\u0131k kaynak olmas\u0131, esnekli\u011fi ve OAuth 2.0 \/ OpenID Connect deste\u011fi nedeniyle Keycloak'u se\u00e7tiler.<\/p>\n<h3>Sorun: G\u00fcvensiz Keycloak Kurulumu ve Operasyonel Zorluklar<\/h3>\n<p>\u0130lk ba\u015fta, \"Anadolu El Sanatlar\u0131\" ekibi Keycloak'u Docker \u00fczerinde h\u0131zl\u0131ca kurdu, ancak SSL sertifikas\u0131 entegrasyonunu ertelediler ve Keycloak'u HTTP \u00fczerinden \u00e7al\u0131\u015ft\u0131rd\u0131lar. Geli\u015ftirme ortam\u0131nda bu durum sorun yaratmasa da, \u00fcretim ortam\u0131na yakla\u015ft\u0131k\u00e7a a\u015fa\u011f\u0131daki sorunlarla kar\u015f\u0131la\u015ft\u0131lar:<\/p>\n<ol>\n<li><strong>Taray\u0131c\u0131 G\u00fcvenlik Uyar\u0131lar\u0131:<\/strong> Uygulama kullan\u0131c\u0131lar\u0131 Keycloak'un oturum a\u00e7ma sayfas\u0131na y\u00f6nlendirildi\u011finde taray\u0131c\u0131lar\u0131nda \"Bu site g\u00fcvenli de\u011fil\" uyar\u0131lar\u0131 g\u00f6rmeye ba\u015flad\u0131. Bu durum, \u015firket imaj\u0131na zarar veriyor ve kullan\u0131c\u0131 g\u00fcvenini sars\u0131yordu.<\/li>\n<li><strong>Mobil Uygulama Entegrasyonu Sorunlar\u0131:<\/strong> Mobil uygulamalar (iOS\/Android), g\u00fcvenli olmayan HTTP ba\u011flant\u0131lar\u0131yla Keycloak ile ileti\u015fim kurmay\u0131 reddediyordu veya \u00f6zel istisnalar gerektiriyordu. Bu da geli\u015ftirme s\u00fcrecini karma\u015f\u0131kla\u015ft\u0131r\u0131yordu.<\/li>\n<li><strong>API G\u00fcvenli\u011fi Endi\u015feleri:<\/strong> Mikro hizmetler Keycloak ile token al\u0131\u015fveri\u015fi yaparken, HTTP \u00fczerinden g\u00f6nderilen yetkilendirme kodlar\u0131 ve eri\u015fim token'lar\u0131 a\u011fda d\u00fcz metin olarak iletiliyordu. Bu, \"Man-in-the-Middle\" (Ortadaki Adam) sald\u0131r\u0131lar\u0131na a\u00e7\u0131k bir kap\u0131 b\u0131rak\u0131yordu ve hassas kullan\u0131c\u0131 verilerinin ele ge\u00e7irilme riskini art\u0131r\u0131yordu.<\/li>\n<li><strong>Veri Taban\u0131 Ba\u011flant\u0131s\u0131 G\u00fcvenli\u011fi:<\/strong> Keycloak'un arkas\u0131ndaki PostgreSQL veritaban\u0131na olan ba\u011flant\u0131lar da ba\u015flang\u0131\u00e7ta \u015fifresizdi, bu da veritaban\u0131 seviyesinde ek g\u00fcvenlik riskleri yarat\u0131yordu.<\/li>\n<\/ol>\n<h3>\u00c7\u00f6z\u00fcm: Docker Run ile G\u00fcvenli SSL Entegrasyonu ve Nginx Ters Proxy<\/h3>\n<p>Ekip, bu g\u00fcvenlik ve operasyonel sorunlar\u0131 \u00e7\u00f6zmek i\u00e7in makalede anlat\u0131lan ad\u0131mlar\u0131 izleyerek Keycloak kurulumlar\u0131n\u0131 g\u00fcvenli hale getirme karar\u0131 ald\u0131. Bu s\u00fcre\u00e7te att\u0131klar\u0131 ad\u0131mlar \u015funlar oldu:<\/p>\n<ol>\n<li><strong>Geli\u015ftirme Ortam\u0131 \u0130\u00e7in Kendinden \u0130mzal\u0131 Sertifikalar:<\/strong> Geli\u015ftirme ortam\u0131nda h\u0131zl\u0131 testler i\u00e7in OpenSSL kullanarak kendinden imzal\u0131 sertifikalar olu\u015fturdular ve bunlar\u0131 Keycloak'un bir PKCS#12 keystore'una d\u00f6n\u00fc\u015ft\u00fcrd\u00fcler. B\u00f6ylece geli\u015ftiriciler, \u00fcretimdeki davran\u0131\u015fa yak\u0131n bir ortamda \u00e7al\u0131\u015fabildi ve mobil uygulamalar\u0131 SSL ile test etmeye ba\u015flad\u0131.<\/li>\n<li><strong>\u00dcretim Ortam\u0131 \u0130\u00e7in Let's Encrypt ve Nginx Ters Proxy:<\/strong> \u00dcretim ortam\u0131nda, maliyet etkinli\u011fi ve otomatik yenileme \u00f6zellikleri nedeniyle Let's Encrypt sertifikalar\u0131n\u0131 kullanmaya karar verdiler. Keycloak'u do\u011frudan d\u0131\u015f d\u00fcnyaya a\u00e7mak yerine, trafik y\u00fck\u00fcn\u00fc dengelemek ve sertifika y\u00f6netimini kolayla\u015ft\u0131rmak i\u00e7in bir Nginx ters proxy kullanmaya karar verdiler. Nginx, 443 portundan gelen HTTPS trafi\u011fini sonland\u0131r\u0131yor, Let's Encrypt sertifikalar\u0131n\u0131 y\u00f6netiyor ve ard\u0131ndan trafi\u011fi dahili a\u011fda HTTP \u00fczerinden Keycloak konteynerine iletiyordu. Bu yakla\u015f\u0131m, Keycloak'un g\u00fcvenlik y\u00fck\u00fcn\u00fc azaltt\u0131 ve sertifika yenileme s\u00fcre\u00e7lerini otomatik hale getirdi.<\/li>\n<li><strong>Docker Komutlar\u0131n\u0131n G\u00fcncellenmesi:<\/strong>\n<ul>\n<li>Keycloak'u HTTP'de (8080) \u00e7al\u0131\u015facak \u015fekilde Docker'da ba\u015flatt\u0131lar, ancak sadece dahili a\u011fdan eri\u015filebilir k\u0131ld\u0131lar.<\/li>\n<li>Nginx konteynerini ise 443 portunda \u00e7al\u0131\u015ft\u0131rd\u0131lar ve ana makineye ba\u011flad\u0131lar. Nginx'in yap\u0131land\u0131rmas\u0131na Let's Encrypt sertifikalar\u0131 ve Keycloak'a y\u00f6nlendirme kurallar\u0131 eklendi.<\/li>\n<\/ul>\n<p>A\u015fa\u011f\u0131daki gibi bir Nginx yap\u0131land\u0131rmas\u0131 kulland\u0131lar (basitle\u015ftirilmi\u015f):<\/p>\n<pre><code>\nserver {\n    listen 443 ssl;\n    server_name keycloak.anadoluelsanatlari.com;\n\n    ssl_certificate \/etc\/letsencrypt\/live\/keycloak.anadoluelsanatlari.com\/fullchain.pem;\n    ssl_certificate_key \/etc\/letsencrypt\/live\/keycloak.anadoluelsanatlari.com\/privkey.pem;\n\n    location \/ {\n        proxy_pass http:\/\/keycloak-container:8080; # Dahili a\u011fdaki Keycloak servis ad\u0131\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto $scheme;\n        proxy_redirect off;\n    }\n}\n<\/pre>\n<p><\/code><\/p>\n<p>Keycloak konteynerini ba\u015flat\u0131rken <code>KC_HOSTNAME<\/code> de\u011ferini Nginx'in kulland\u0131\u011f\u0131 alan ad\u0131na ayarlad\u0131lar:<\/p>\n<pre><code>\ndocker run -d --name keycloak-container \\\n  -e KEYCLOAK_ADMIN=anadolu_admin \\\n  -e KEYCLOAK_ADMIN_PASSWORD=cok_guclu_sifre \\\n  -e KC_HOSTNAME=keycloak.anadoluelsanatlari.com \\\n  -e KC_DB=postgres \\\n  -e KC_DB_URL_HOST=postgres-container \\\n  -e KC_DB_USERNAME=keycloak_db_user \\\n  -e KC_DB_PASSWORD=db_cok_guclu_sifre \\\n  jboss\/keycloak:18.0.0 \\\n  start --optimized\n<\/pre>\n<p><\/code><\/p>\n<p>Nginx konteynerini ba\u015flat\u0131rken ise Let's Encrypt sertifikalar\u0131n\u0131n oldu\u011fu dizini ba\u011flad\u0131lar:<\/p>\n<pre><code>\ndocker run -d --name nginx-proxy \\\n  -p 443:443 \\\n  -v .\/nginx.conf:\/etc\/nginx\/conf.d\/default.conf \\\n  -v \/etc\/letsencrypt:\/etc\/letsencrypt \\ # Certbot ile al\u0131nan sertifikalar\u0131n oldu\u011fu dizin\n  --network your_docker_network \\\n  nginx\n<\/pre>\n<p><\/code>\n    <\/li>\n<li><strong>Veritaban\u0131 \u015eifrelemesi:<\/strong> PostgreSQL ba\u011flant\u0131lar\u0131n\u0131 da SSL ile \u015fifrelemek i\u00e7in Keycloak'un veritaban\u0131 ba\u011flant\u0131 URL'sine <code>sslmode=require<\/code> parametresini eklediler ve PostgreSQL sunucusunu da SSL ile yap\u0131land\u0131rd\u0131lar.<\/li>\n<\/ol>\n<h3>Sonu\u00e7lar ve Faydalar\u0131<\/h3>\n<p>Bu g\u00fcvenli ge\u00e7i\u015fin ard\u0131ndan, \"Anadolu El Sanatlar\u0131\" \u015firketi \u00f6nemli faydalar elde etti:<\/p>\n<ul>\n<li><strong>Geli\u015ftirilmi\u015f G\u00fcvenlik:<\/strong> T\u00fcm hassas veriler (kullan\u0131c\u0131 kimlik bilgileri, token'lar) a\u011f \u00fczerinden \u015fifreli olarak iletilerek g\u00fcvenlik a\u00e7\u0131klar\u0131 kapat\u0131ld\u0131.<\/li>\n<li><strong>Artan Kullan\u0131c\u0131 G\u00fcveni:<\/strong> Taray\u0131c\u0131daki g\u00fcvenlik uyar\u0131lar\u0131 ortadan kalkt\u0131, bu da kullan\u0131c\u0131lar\u0131n siteye olan g\u00fcvenini art\u0131rd\u0131 ve profesyonel bir imaj sa\u011flad\u0131.<\/li>\n<li><strong>Sorunsuz Mobil Entegrasyon:<\/strong> Mobil uygulamalar, Keycloak ile sorunsuz bir \u015fekilde HTTPS \u00fczerinden ileti\u015fim kurabildi, geli\u015ftirme s\u00fcre\u00e7leri basitle\u015fti.<\/li>\n<li><strong>Kolayla\u015ft\u0131r\u0131lm\u0131\u015f Sertifika Y\u00f6netimi:<\/strong> Nginx ve Certbot entegrasyonu sayesinde Let's Encrypt sertifikalar\u0131n\u0131n otomatik yenilenmesi sa\u011fland\u0131, manuel m\u00fcdahaleye gerek kalmad\u0131.<\/li>\n<li><strong>Merkezi Kimlik Y\u00f6netimi:<\/strong> Keycloak'un sundu\u011fu SSO ve di\u011fer \u00f6zellikler tam potansiyeliyle kullan\u0131labildi, kullan\u0131c\u0131lar t\u00fcm hizmetlere tek bir hesapla eri\u015febildi ve \u015firket i\u00e7indeki y\u00f6netim y\u00fck\u00fc azald\u0131.<\/li>\n<\/ul>\n<p>Bu vaka analizi, k\u00fc\u00e7\u00fck bir \u015firketin bile do\u011fru ad\u0131mlarla ve uygun ara\u00e7larla (Docker, Keycloak, Nginx, Let's Encrypt) \u00fcretim ortam\u0131nda sa\u011flam ve g\u00fcvenli bir kimlik y\u00f6netim altyap\u0131s\u0131 kurabilece\u011fini g\u00f6stermektedir. G\u00fcvenlik, hi\u00e7bir zaman g\u00f6z ard\u0131 edilmemesi gereken bir \u00f6nceliktir ve SSL\/TLS entegrasyonu, bu g\u00fcvenlik katman\u0131n\u0131n temelini olu\u015fturur.<\/p>\n<h2>\u0130leri D\u00fczey Keycloak Yap\u0131land\u0131rmalar\u0131 ve En \u0130yi Uygulamalar Nelerdir?<\/h2>\n<p>Keycloak'u SSL sertifikalar\u0131yla g\u00fcvenli bir \u015fekilde Docker \u00fczerinde \u00e7al\u0131\u015ft\u0131rmak \u00f6nemli bir ad\u0131md\u0131r, ancak \u00fcretim ortam\u0131nda kararl\u0131, performansl\u0131 ve bak\u0131m\u0131 kolay bir sistem i\u00e7in daha ileri d\u00fczey yap\u0131land\u0131rmalar ve en iyi uygulamalar g\u00f6z \u00f6n\u00fcnde bulundurulmal\u0131d\u0131r. Bu b\u00f6l\u00fcm, Keycloak kurulumunuzu daha da sa\u011flamla\u015ft\u0131rmak i\u00e7in \u00e7e\u015fitli ipu\u00e7lar\u0131 ve teknikler sunacakt\u0131r.<\/p>\n<h3>Kal\u0131c\u0131 Veri Depolama (Persistent Storage)<\/h3>\n<p>Varsay\u0131lan Keycloak Docker imaj\u0131, t\u00fcm verileri (realm'ler, kullan\u0131c\u0131lar, oturumlar) konteynerin kendi dosya sisteminde tutar. Bu, konteyner silindi\u011finde t\u00fcm verilerin kaybolaca\u011f\u0131 anlam\u0131na gelir. \u00dcretim ortam\u0131nda bu kabul edilemez bir durumdur. Bu nedenle, Keycloak'u harici bir veritaban\u0131na ba\u011flamak ve konteyner verilerini kal\u0131c\u0131 hale getirmek esast\u0131r.<\/p>\n<p><strong>Veritaban\u0131 Entegrasyonu:<\/strong> Keycloak, PostgreSQL, MySQL\/MariaDB, Oracle ve MS SQL Server gibi bir\u00e7ok veritaban\u0131n\u0131 destekler. Docker \u00fczerinde Keycloak'u harici bir veritaban\u0131na ba\u011flamak i\u00e7in, veritaban\u0131 sunucusunu ayr\u0131 bir konteynerde veya y\u00f6netilen bir hizmet olarak \u00e7al\u0131\u015ft\u0131rmal\u0131 ve Keycloak konteynerini bu veritaban\u0131na ba\u011flamal\u0131s\u0131n\u0131z. A\u015fa\u011f\u0131daki ortam de\u011fi\u015fkenleri bu ba\u011flant\u0131 i\u00e7in kullan\u0131l\u0131r:<\/p>\n<pre><code>\ndocker run -d --name keycloak-prod \\\n  -p 8443:8443 \\\n  -v .\/certs\/keycloak_prod.p12:\/opt\/keycloak\/conf\/keycloak.p12 \\\n  -e KC_HTTPS_KEYSTORE_FILE=\/opt\/keycloak\/conf\/keycloak.p12 \\\n  -e KC_HTTPS_KEYSTORE_PASSWORD=YourProductionPassword \\\n  -e KC_HOSTNAME=keycloak.yourdomain.com \\\n  -e KC_DB=postgres \\\n  -e KC_DB_URL_HOST=postgres-container \\\n  -e KC_DB_URL_DATABASE=keycloak \\\n  -e KC_DB_USERNAME=keycloak_db_user \\\n  -e KC_DB_PASSWORD=db_cok_guclu_sifre \\\n  jboss\/keycloak:18.0.0 \\\n  start --optimized\n<\/pre>\n<p><\/code><\/p>\n<p>Burada <code>postgres-container<\/code>, Docker a\u011f\u0131ndaki PostgreSQL konteynerinizin ad\u0131d\u0131r. Bu sayede Keycloak verileri veritaban\u0131nda saklan\u0131r ve konteyner silinse bile verileriniz g\u00fcvende kal\u0131r.<\/p>\n<h3>Ters Proxy (Reverse Proxy) Kullan\u0131m\u0131: Nginx veya Apache<\/h3>\n<p>\u00dcretim ortamlar\u0131nda Keycloak'u do\u011frudan internete a\u00e7mak yerine, \u00f6n\u00fcne bir ters proxy (Nginx, Apache HTTP Server veya bir Load Balancer) yerle\u015ftirmek en iyi uygulamad\u0131r. Ters proxy'nin faydalar\u0131 \u015funlard\u0131r:<\/p>\n<ul>\n<li><strong>SSL Sonland\u0131rma:<\/strong> Sertifika y\u00f6netimi ve SSL sonland\u0131rma, ters proxy \u00fczerinde yap\u0131l\u0131r. Bu, Keycloak'un kaynaklar\u0131n\u0131 serbest b\u0131rak\u0131r ve Keycloak'un dahili a\u011fda HTTP \u00fczerinden \u00e7al\u0131\u015fmas\u0131na olanak tan\u0131r. Sertifika yenileme gibi i\u015flemler proxy \u00fczerinde yap\u0131l\u0131r ve Keycloak'un kendisi bu de\u011fi\u015fikliklerden etkilenmez.<\/li>\n<li><strong>Y\u00fck Dengeleme:<\/strong> Birden fazla Keycloak \u00f6rne\u011fi \u00e7al\u0131\u015ft\u0131\u011f\u0131nda, ters proxy gelen trafi\u011fi bu \u00f6rneklere da\u011f\u0131tabilir, b\u00f6ylece \u00f6l\u00e7eklenebilirlik ve y\u00fcksek eri\u015filebilirlik sa\u011flan\u0131r.<\/li>\n<li><strong>Ek G\u00fcvenlik Katman\u0131:<\/strong> Ters proxy, DDoS korumas\u0131, Web Uygulama G\u00fcvenlik Duvar\u0131 (WAF) entegrasyonu ve eri\u015fim kontrol\u00fc gibi ek g\u00fcvenlik katmanlar\u0131 sa\u011flayabilir.<\/li>\n<li><strong>Statik \u0130\u00e7erik Sunumu:<\/strong> Gerekirse, ters proxy statik dosyalar\u0131 (CSS, JS) Keycloak'tan ba\u011f\u0131ms\u0131z olarak sunabilir, performans\u0131 art\u0131r\u0131r.<\/li>\n<\/ul>\n<p>Bir ters proxy kullan\u0131rken Keycloak'un <code>KC_HOSTNAME<\/code>, <code>KC_HTTP_ENABLED=true<\/code> (e\u011fer HTTP kullan\u0131l\u0131yorsa) ve <code>KC_PROXY=edge<\/code> veya <code>KC_PROXY=reencrypt<\/code> gibi ayarlar\u0131n\u0131n do\u011fru yap\u0131ld\u0131\u011f\u0131ndan emin olunmal\u0131d\u0131r. <code>KC_PROXY=edge<\/code>, ters proxy'nin SSL sonland\u0131rmas\u0131n\u0131 yapt\u0131\u011f\u0131n\u0131 ve Keycloak'a HTTP ile eri\u015fildi\u011fini belirtir. <code>KC_PROXY=reencrypt<\/code> ise ters proxy ile Keycloak aras\u0131nda da SSL ba\u011flant\u0131s\u0131 oldu\u011funu varsayar.<\/p>\n<h3>Keycloak Performans Ayarlar\u0131<\/h3>\n<p>Keycloak'un performans\u0131n\u0131 optimize etmek i\u00e7in Java Virtual Machine (JVM) ve Keycloak'un kendi yap\u0131land\u0131rma ayarlar\u0131 \u00fczerinde \u00e7al\u0131\u015fabilirsiniz:<\/p>\n<ul>\n<li><strong>JVM Bellek Ayarlar\u0131:<\/strong> <code>JAVA_OPTS_APPEND<\/code> ortam de\u011fi\u015fkeni ile JVM heap boyutunu (<code>-Xmx<\/code>, <code>-Xms<\/code>) ayarlayabilirsiniz. \u00d6rne\u011fin:\n<pre><code>\n-e JAVA_OPTS_APPEND=\"-Xmx2048m -Xms512m\"\n<\/pre>\n<p><\/code>\n    <\/li>\n<li><strong>\u00d6nbellekleme (Caching):<\/strong> Keycloak, performans i\u00e7in geni\u015f \u00e7apl\u0131 \u00f6nbellekleme kullan\u0131r. \u00d6nbellek ayarlar\u0131n\u0131 (\u00f6rne\u011fin Infinispan) \u00f6zelle\u015ftirebilirsiniz. Y\u00fcksek y\u00fckl\u00fc ortamlarda da\u011f\u0131t\u0131k \u00f6nbellek (distributed cache) kullanmak gerekebilir.<\/li>\n<li><strong>Veritaban\u0131 Ba\u011flant\u0131 Havuzu:<\/strong> Veritaban\u0131 ba\u011flant\u0131 havuzunun boyutunu ayarlayarak veritaban\u0131 performans\u0131n\u0131 optimize edebilirsiniz. Bu ayarlar, Keycloak'un veritaban\u0131 ba\u011flant\u0131lar\u0131n\u0131 daha etkin kullanmas\u0131n\u0131 sa\u011flar.<\/li>\n<\/ul>\n<h3>Kapsay\u0131c\u0131 Y\u00f6netim Platformlar\u0131 (Kubernetes, Docker Swarm)<\/h3>\n<p>Tek bir <code>docker run<\/code> komutu ile ba\u015flayan kurulum, \u00fcretim ortam\u0131nda genellikle Kubernetes veya Docker Swarm gibi kapsay\u0131c\u0131 d\u00fczenleme platformlar\u0131na ta\u015f\u0131n\u0131r. Bu platformlar, y\u00fcksek eri\u015filebilirlik, otomatik \u00f6l\u00e7eklendirme, hizmet ke\u015ffi ve otomatik sertifika y\u00f6netimi (\u00f6rne\u011fin Cert-Manager ile) gibi geli\u015fmi\u015f \u00f6zellikler sunar. Bu ge\u00e7i\u015f, karma\u015f\u0131kl\u0131\u011f\u0131 art\u0131rsa da, b\u00fcy\u00fck \u00f6l\u00e7ekli ve kritik uygulamalar i\u00e7in vazge\u00e7ilmezdir.<\/p>\n<h3>G\u00fcvenlik \u0130pu\u00e7lar\u0131<\/h3>\n<ul>\n<li><strong>Y\u00f6netici Kimlik Bilgileri:<\/strong> Keycloak y\u00f6netim konsolu i\u00e7in kullan\u0131lan <code>KEYCLOAK_ADMIN_PASSWORD<\/code> her zaman \u00e7ok g\u00fc\u00e7l\u00fc ve karma\u015f\u0131k bir \u015fifre olmal\u0131d\u0131r. M\u00fcmk\u00fcnse, bu bilgileri ortam de\u011fi\u015fkenleri yerine Docker Secrets veya Kubernetes Secrets gibi g\u00fcvenli mekanizmalarla y\u00f6netin.<\/li>\n<li><strong>Sertifika Yenileme:<\/strong> \u00d6zellikle Let's Encrypt gibi k\u0131sa \u00f6m\u00fcrl\u00fc sertifikalar kullan\u0131yorsan\u0131z, otomatik yenileme s\u00fcre\u00e7lerinin (\u00f6rne\u011fin Certbot veya Nginx proxy \u00fczerinde) d\u00fczg\u00fcn \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olun. Sertifikan\u0131n s\u00fcresi doldu\u011funda t\u00fcm uygulaman\u0131z eri\u015filemez hale gelebilir.<\/li>\n<li><strong>S\u00fcrekli G\u00fcvenlik Denetimi:<\/strong> Keycloak g\u00fcncellemelerini takip edin ve g\u00fcvenlik yamalar\u0131n\u0131 d\u00fczenli olarak uygulay\u0131n. Keycloak toplulu\u011fu ve geli\u015ftiricileri, olas\u0131 g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 h\u0131zla giderirler.<\/li>\n<li><strong>Denetim ve \u0130zleme:<\/strong> Keycloak'un ve alt\u0131nda yatan JVM'nin performans\u0131n\u0131 ve g\u00fcvenlik loglar\u0131n\u0131 izlemek i\u00e7in ara\u00e7lar kullan\u0131n. Anomalileri tespit etmek ve olas\u0131 sald\u0131r\u0131lara kar\u015f\u0131 erken uyar\u0131 sa\u011flamak i\u00e7in bu loglar \u00e7ok de\u011ferlidir.<\/li>\n<\/ul>\n<aside class=\"expert-tip\">\n    \u00dcretim ortam\u0131nda <code>start-dev<\/code> komutunu asla kullanmay\u0131n! Bu mod, bir\u00e7ok g\u00fcvenlik kontrol\u00fcn\u00fc atlar ve kolayca sald\u0131r\u0131lara a\u00e7\u0131k hale gelirsiniz. Daima <code>start --optimized<\/code> komutunu kullan\u0131n ve t\u00fcm \u00fcretim konfig\u00fcrasyonlar\u0131n\u0131 (veritaban\u0131, SSL, vb.) do\u011fru bir \u015fekilde yap\u0131n.<br \/>\n<\/aside>\n<p>Bu ileri d\u00fczey yap\u0131land\u0131rmalar ve en iyi uygulamalar, Keycloak kurulumunuzu geli\u015ftirme ortam\u0131ndan \u00fcretim ortam\u0131na sorunsuz bir \u015fekilde ta\u015f\u0131rken kar\u015f\u0131la\u015fabilece\u011finiz g\u00fcvenlik, performans ve y\u00f6netim zorluklar\u0131n\u0131 a\u015fman\u0131za yard\u0131mc\u0131 olacakt\u0131r. G\u00fcvenli bir kimlik y\u00f6netimi altyap\u0131s\u0131 kurmak, sadece ilk kurulumu yapmakla bitmez; s\u00fcrekli bak\u0131m, izleme ve iyile\u015ftirme gerektiren dinamik bir s\u00fcre\u00e7tir.<\/p>\n<h2>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h2>\n<p>Bu b\u00f6l\u00fcmde, Docker ile SSL sertifikal\u0131 Keycloak kurulumu hakk\u0131nda s\u0131k\u00e7a kar\u015f\u0131la\u015f\u0131lan sorular\u0131 ve cevaplar\u0131n\u0131 bulacaks\u0131n\u0131z. Bu bilgiler, kar\u015f\u0131la\u015ft\u0131\u011f\u0131n\u0131z sorunlar\u0131 gidermenize veya kurulumunuzu daha iyi anlaman\u0131za yard\u0131mc\u0131 olacakt\u0131r.<\/p>\n<h3>Keycloak'u HTTP \u00fczerinden \u00e7al\u0131\u015ft\u0131r\u0131p, \u00f6n\u00fcne bir ters proxy ile SSL sonland\u0131rmas\u0131 yapmak daha m\u0131 g\u00fcvenlidir?<\/h3>\n<p>Evet, genellikle \u00fcretim ortamlar\u0131nda bu yakla\u015f\u0131m daha \u00e7ok tercih edilir ve daha g\u00fcvenli kabul edilir. Ters proxy (Nginx, Apache veya bir y\u00fck dengeleyici) SSL sertifikalar\u0131n\u0131 y\u00f6netir ve gelen HTTPS trafi\u011fini sonland\u0131r\u0131r. Ard\u0131ndan, trafi\u011fi dahili a\u011f i\u00e7inde HTTP (veya dahili a\u011fda da SSL ile \"re-encrypt\") \u00fczerinden Keycloak konteynerine iletir. Bunun faydalar\u0131 \u015funlard\u0131r:<\/p>\n<ul>\n<li><strong>Merkezi Sertifika Y\u00f6netimi:<\/strong> Sertifikalar\u0131n yenilenmesi ve y\u00f6netimi tek bir noktada (proxy \u00fczerinde) kolayla\u015f\u0131r.<\/li>\n<li><strong>Keycloak Kaynaklar\u0131n\u0131n Serbest B\u0131rak\u0131lmas\u0131:<\/strong> SSL \u015fifreleme\/\u015fifre \u00e7\u00f6zme y\u00fck\u00fc proxy \u00fczerine biner, Keycloak'un CPU kaynaklar\u0131 kimlik y\u00f6netimi g\u00f6revlerine ayr\u0131l\u0131r.<\/li>\n<li><strong>Ek G\u00fcvenlik Katmanlar\u0131:<\/strong> Ters proxy, g\u00fcvenlik duvar\u0131, DDoS korumas\u0131, h\u0131z s\u0131n\u0131rlama gibi ek g\u00fcvenlik \u00f6zellikleri sa\u011flayabilir.<\/li>\n<li><strong>\u00d6l\u00e7eklenebilirlik:<\/strong> Y\u00fck dengeleyicilerle birden fazla Keycloak \u00f6rne\u011fine trafik da\u011f\u0131t\u0131labilir.<\/li>\n<\/ul>\n<p>Bu senaryoda Keycloak'u ba\u015flat\u0131rken <code>KC_HOSTNAME<\/code>'i alan ad\u0131n\u0131za ve <code>KC_PROXY=edge<\/code> (e\u011fer proxy ile Keycloak aras\u0131nda HTTP ise) veya <code>KC_PROXY=reencrypt<\/code> (e\u011fer proxy ile Keycloak aras\u0131nda da HTTPS ise) olarak ayarlaman\u0131z \u00f6nemlidir.<\/p>\n<h3>Keycloak'un SSL sertifikas\u0131n\u0131 ne s\u0131kl\u0131kla yenilemeliyim?<\/h3>\n<p>Sertifikan\u0131n ge\u00e7erlilik s\u00fcresine ba\u011fl\u0131d\u0131r. Let's Encrypt sertifikalar\u0131 genellikle 90 g\u00fcn ge\u00e7erlidir ve bu nedenle her 60-75 g\u00fcnde bir yenilenmesi \u00f6nerilir. Ticari CA'lardan al\u0131nan sertifikalar ise genellikle 1 ila 3 y\u0131l ge\u00e7erlilik s\u00fcresine sahiptir. Sertifika yenileme i\u015flemlerini otomatikle\u015ftirmek, \u00f6zellikle Let's Encrypt i\u00e7in Certbot gibi ara\u00e7larla, en iyi uygulamad\u0131r. Unutulmamal\u0131d\u0131r ki, s\u00fcresi dolmu\u015f bir sertifika, Keycloak'unuzun tamamen eri\u015filemez hale gelmesine neden olabilir.<\/p>\n<h3>Kendinden imzal\u0131 sertifikalar d\u0131\u015f\u0131nda hangi SSL sertifikas\u0131 t\u00fcrlerini kullanmal\u0131y\u0131m?<\/h3>\n<p>\u00dcretim ortamlar\u0131 i\u00e7in her zaman g\u00fcvenilir bir Sertifika Yetkilisi (CA) taraf\u0131ndan imzalanm\u0131\u015f sertifikalar kullanmal\u0131s\u0131n\u0131z. En yayg\u0131n ve \u00f6nerilen se\u00e7enekler \u015funlard\u0131r:<\/p>\n<ul>\n<li><strong>Let's Encrypt:<\/strong> \u00dccretsiz, otomatikle\u015ftirilebilir ve d\u00fcnya genelinde g\u00fcvenilen sertifikalar sunar. Web siteleri ve API'ler i\u00e7in harika bir se\u00e7enektir.<\/li>\n<li><strong>Ticari CA'lar (DigiCert, GlobalSign, Sectigo vb.):<\/strong> Kurulu\u015f do\u011frulama, daha y\u00fcksek garanti seviyeleri ve m\u00fc\u015fteri deste\u011fi sunan \u00fccretli sertifikalard\u0131r. \u00d6zellikle b\u00fcy\u00fck \u00f6l\u00e7ekli i\u015fletmeler veya belirli uyumluluk gereksinimleri olan durumlar i\u00e7in tercih edilebilir.<\/li>\n<\/ul>\n<h3>Keycloak'un Keystore dosyas\u0131n\u0131n \u015fifresini unutursam ne yapmal\u0131y\u0131m?<\/h3>\n<p>Keystore dosyas\u0131n\u0131n \u015fifresi unutulursa, dosyaya eri\u015filemez hale gelir ve Keycloak SSL ba\u011flant\u0131lar\u0131n\u0131 kuramaz. Bu durumda, Keystore dosyas\u0131n\u0131 yeniden olu\u015fturman\u0131z ve yeni bir \u015fifre belirlemeniz gerekebilir. E\u011fer sertifikan\u0131z bir CA taraf\u0131ndan imzalanm\u0131\u015fsa, sertifika sa\u011flay\u0131c\u0131n\u0131zdan yedeklerini isteyebilir veya \u00f6zel anahtar\u0131n\u0131z ve sertifikan\u0131z varsa Keystore'u yeniden olu\u015fturabilirsiniz. Kendinden imzal\u0131 sertifika ise, yukar\u0131daki ad\u0131mlar\u0131 takip ederek yenisini olu\u015fturabilirsiniz. \u015eifrelerin g\u00fcvenli bir \u015fekilde saklanmas\u0131 (\u00f6rne\u011fin bir \u015fifre y\u00f6neticisi veya s\u0131r y\u00f6netimi \u00e7\u00f6z\u00fcm\u00fc ile) bu t\u00fcr durumlar\u0131 \u00f6nlemek i\u00e7in kritik \u00f6neme sahiptir.<\/p>\n<h3>Mobil uyumlu HTML \u00f6rnekleri nas\u0131l dahil edilebilir?<\/h3>\n<p>Makale i\u00e7eri\u011fi genellikle metinsel ve kod tabanl\u0131 oldu\u011fundan, do\u011frudan \"interaktif mobil HTML\" \u00f6\u011felerini dahil etmek pek yayg\u0131n de\u011fildir. Ancak, makalenin genel g\u00f6r\u00fcn\u00fcm\u00fcn\u00fc ve okunabilirli\u011fini art\u0131rmak i\u00e7in CSS Media Query \u00f6rnekleri, HTML i\u00e7eri\u011finin mobil cihazlarda nas\u0131l daha iyi g\u00f6r\u00fcnt\u00fclenebilece\u011fini g\u00f6steren bir \"stil ipucu\" olarak eklenebilir. \u00d6rne\u011fin:<\/p>\n<pre><code class=\"language-html\">\n<style>\n  body {\n    font-family: Arial, sans-serif;\n    line-height: 1.6;\n    color: #333;\n    margin: 0;\n    padding: 20px;\n  }\n  h2 {\n    color: #2c3e50;\n    font-size: 2em;\n    margin-top: 1.5em;\n  }\n  pre {\n    background-color: #f4f4f4;\n    padding: 15px;\n    border-radius: 5px;\n    overflow-x: auto;\n  }\n  \/* Mobil cihazlar i\u00e7in stil iyile\u015ftirmeleri *\/\n  @media (max-width: 768px) {\n    body {\n      padding: 10px;\n      font-size: 0.9em;\n    }\n    h2 {\n      font-size: 1.5em;\n    }\n    pre {\n      white-space: pre-wrap; \/* Uzun kod sat\u0131rlar\u0131n\u0131 sarar *\/\n      word-wrap: break-word;\n    }\n  }\n<\/style>\n<\/pre>\n<p><\/code><\/p>\n<p>Yukar\u0131daki CSS kodu, web sayfas\u0131n\u0131n temel stilini tan\u0131mlar ve bir medya sorgusu (<code>@media (max-width: 768px)<\/code>) kullanarak, ekran geni\u015fli\u011fi 768 pikselden az oldu\u011funda (yani mobil cihazlarda) yaz\u0131 tipi boyutunu k\u00fc\u00e7\u00fclt\u00fcr ve kod bloklar\u0131n\u0131n i\u00e7eri\u011fini otomatik olarak sarar. Bu, mobil cihazlarda kod \u00f6rneklerinin okunabilirli\u011fini art\u0131r\u0131r.<\/p>\n<p>Bu makalede, Docker run komutunu kullanarak SSL sertifikal\u0131 bir Keycloak kurulumunu ad\u0131m ad\u0131m nas\u0131l ger\u00e7ekle\u015ftirece\u011finizi, temelden ileri d\u00fczeye kadar t\u00fcm detaylar\u0131yla \u00f6\u011frendiniz. G\u00fcvenli bir kimlik ve eri\u015fim y\u00f6netimi altyap\u0131s\u0131, modern uygulamalar i\u00e7in vazge\u00e7ilmezdir ve bu rehber, bu yolda size sa\u011flam bir ba\u015flang\u0131\u00e7 noktas\u0131 sunmay\u0131 ama\u00e7lam\u0131\u015ft\u0131r.<\/p>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Kimlik ve eri\u015fim y\u00f6netimi modern uygulamalar\u0131n vazge\u00e7ilmez bir par\u00e7as\u0131d\u0131r ve bu alanda Keycloak g\u00fc\u00e7l\u00fc bir a\u00e7\u0131k kaynak \u00e7\u00f6z\u00fcm&hellip;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1407],"tags":[],"class_list":{"0":"post-32509","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-docker","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Docker Run ile G\u00fcvenli Keycloak Kurulumu: SSL Sertifikalar\u0131yla Ad\u0131m Ad\u0131m Rehber<\/title>\n<meta name=\"description\" content=\"Kimlik ve eri\u015fim y\u00f6netimi modern uygulamalar\u0131n vazge\u00e7ilmez bir par\u00e7as\u0131d\u0131r ve bu alanda Keycloak g\u00fc\u00e7l\u00fc bir a\u00e7\u0131k kaynak \u00e7\u00f6z\u00fcm sunar. Ancak, Keycloak&#039;u Docker \u00fczerinde \u00e7al\u0131\u015ft\u0131r\u0131rken g\u00fcvenli\u011fi sa\u011flamak, \u00f6zellikle hassas verilerin iletimi s\u00f6z konusu oldu\u011funda kritik \u00f6neme sahiptir. Peki, Docker run komutunu kullanarak SSL sertifikalar\u0131yla g\u00fcvenli bir Keycloak kurulumunu ad\u0131m ad\u0131m nas\u0131l ger\u00e7ekle\u015ftirebiliriz? Bu rehberde, \u00fcretim ortam\u0131na haz\u0131r, g\u00fcvenli bir Keycloak \u00f6rne\u011fini Docker konteynerlerinde nas\u0131l hayata ge\u00e7irece\u011finizi, SSL\/TLS \u015fifrelemesinin t\u00fcm detaylar\u0131yla birlikte ele alaca\u011f\u0131z.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/docker-run-ile-guvenli-keycloak-kurulumu-ssl-sertifikalariyla-adim-adim-rehber\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Docker Run ile G\u00fcvenli Keycloak Kurulumu: SSL Sertifikalar\u0131yla Ad\u0131m Ad\u0131m Rehber\" \/>\n<meta property=\"og:description\" content=\"Kimlik ve eri\u015fim y\u00f6netimi modern uygulamalar\u0131n vazge\u00e7ilmez bir par\u00e7as\u0131d\u0131r ve bu alanda Keycloak g\u00fc\u00e7l\u00fc bir a\u00e7\u0131k kaynak \u00e7\u00f6z\u00fcm sunar. Ancak, Keycloak&#039;u Docker \u00fczerinde \u00e7al\u0131\u015ft\u0131r\u0131rken g\u00fcvenli\u011fi sa\u011flamak, \u00f6zellikle hassas verilerin iletimi s\u00f6z konusu oldu\u011funda kritik \u00f6neme sahiptir. Peki, Docker run komutunu kullanarak SSL sertifikalar\u0131yla g\u00fcvenli bir Keycloak kurulumunu ad\u0131m ad\u0131m nas\u0131l ger\u00e7ekle\u015ftirebiliriz? Bu rehberde, \u00fcretim ortam\u0131na haz\u0131r, g\u00fcvenli bir Keycloak \u00f6rne\u011fini Docker konteynerlerinde nas\u0131l hayata ge\u00e7irece\u011finizi, SSL\/TLS \u015fifrelemesinin t\u00fcm detaylar\u0131yla birlikte ele alaca\u011f\u0131z.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/docker-run-ile-guvenli-keycloak-kurulumu-ssl-sertifikalariyla-adim-adim-rehber\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-22T12:32:00+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"32 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/docker-run-ile-guvenli-keycloak-kurulumu-ssl-sertifikalariyla-adim-adim-rehber\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/docker-run-ile-guvenli-keycloak-kurulumu-ssl-sertifikalariyla-adim-adim-rehber\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Docker Run ile G\u00fcvenli Keycloak Kurulumu: SSL Sertifikalar\u0131yla Ad\u0131m Ad\u0131m Rehber\",\"datePublished\":\"2025-10-22T12:32:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/docker-run-ile-guvenli-keycloak-kurulumu-ssl-sertifikalariyla-adim-adim-rehber\/\"},\"wordCount\":5756,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Docker\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/docker-run-ile-guvenli-keycloak-kurulumu-ssl-sertifikalariyla-adim-adim-rehber\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/docker-run-ile-guvenli-keycloak-kurulumu-ssl-sertifikalariyla-adim-adim-rehber\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/docker-run-ile-guvenli-keycloak-kurulumu-ssl-sertifikalariyla-adim-adim-rehber\/\",\"name\":\"Docker Run ile G\u00fcvenli Keycloak Kurulumu: SSL Sertifikalar\u0131yla Ad\u0131m Ad\u0131m Rehber\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-10-22T12:32:00+00:00\",\"description\":\"Kimlik ve eri\u015fim y\u00f6netimi modern uygulamalar\u0131n vazge\u00e7ilmez bir par\u00e7as\u0131d\u0131r ve bu alanda Keycloak g\u00fc\u00e7l\u00fc bir a\u00e7\u0131k kaynak \u00e7\u00f6z\u00fcm sunar. Ancak, Keycloak'u Docker \u00fczerinde \u00e7al\u0131\u015ft\u0131r\u0131rken g\u00fcvenli\u011fi sa\u011flamak, \u00f6zellikle hassas verilerin iletimi s\u00f6z konusu oldu\u011funda kritik \u00f6neme sahiptir. Peki, Docker run komutunu kullanarak SSL sertifikalar\u0131yla g\u00fcvenli bir Keycloak kurulumunu ad\u0131m ad\u0131m nas\u0131l ger\u00e7ekle\u015ftirebiliriz? Bu rehberde, \u00fcretim ortam\u0131na haz\u0131r, g\u00fcvenli bir Keycloak \u00f6rne\u011fini Docker konteynerlerinde nas\u0131l hayata ge\u00e7irece\u011finizi, SSL\/TLS \u015fifrelemesinin t\u00fcm detaylar\u0131yla birlikte ele alaca\u011f\u0131z.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/docker-run-ile-guvenli-keycloak-kurulumu-ssl-sertifikalariyla-adim-adim-rehber\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/docker-run-ile-guvenli-keycloak-kurulumu-ssl-sertifikalariyla-adim-adim-rehber\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/docker-run-ile-guvenli-keycloak-kurulumu-ssl-sertifikalariyla-adim-adim-rehber\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Docker Run ile G\u00fcvenli Keycloak Kurulumu: SSL Sertifikalar\u0131yla Ad\u0131m Ad\u0131m Rehber\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Docker Run ile G\u00fcvenli Keycloak Kurulumu: SSL Sertifikalar\u0131yla Ad\u0131m Ad\u0131m Rehber","description":"Kimlik ve eri\u015fim y\u00f6netimi modern uygulamalar\u0131n vazge\u00e7ilmez bir par\u00e7as\u0131d\u0131r ve bu alanda Keycloak g\u00fc\u00e7l\u00fc bir a\u00e7\u0131k kaynak \u00e7\u00f6z\u00fcm sunar. Ancak, Keycloak'u Docker \u00fczerinde \u00e7al\u0131\u015ft\u0131r\u0131rken g\u00fcvenli\u011fi sa\u011flamak, \u00f6zellikle hassas verilerin iletimi s\u00f6z konusu oldu\u011funda kritik \u00f6neme sahiptir. Peki, Docker run komutunu kullanarak SSL sertifikalar\u0131yla g\u00fcvenli bir Keycloak kurulumunu ad\u0131m ad\u0131m nas\u0131l ger\u00e7ekle\u015ftirebiliriz? Bu rehberde, \u00fcretim ortam\u0131na haz\u0131r, g\u00fcvenli bir Keycloak \u00f6rne\u011fini Docker konteynerlerinde nas\u0131l hayata ge\u00e7irece\u011finizi, SSL\/TLS \u015fifrelemesinin t\u00fcm detaylar\u0131yla birlikte ele alaca\u011f\u0131z.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/docker-run-ile-guvenli-keycloak-kurulumu-ssl-sertifikalariyla-adim-adim-rehber\/","og_locale":"tr_TR","og_type":"article","og_title":"Docker Run ile G\u00fcvenli Keycloak Kurulumu: SSL Sertifikalar\u0131yla Ad\u0131m Ad\u0131m Rehber","og_description":"Kimlik ve eri\u015fim y\u00f6netimi modern uygulamalar\u0131n vazge\u00e7ilmez bir par\u00e7as\u0131d\u0131r ve bu alanda Keycloak g\u00fc\u00e7l\u00fc bir a\u00e7\u0131k kaynak \u00e7\u00f6z\u00fcm sunar. Ancak, Keycloak'u Docker \u00fczerinde \u00e7al\u0131\u015ft\u0131r\u0131rken g\u00fcvenli\u011fi sa\u011flamak, \u00f6zellikle hassas verilerin iletimi s\u00f6z konusu oldu\u011funda kritik \u00f6neme sahiptir. Peki, Docker run komutunu kullanarak SSL sertifikalar\u0131yla g\u00fcvenli bir Keycloak kurulumunu ad\u0131m ad\u0131m nas\u0131l ger\u00e7ekle\u015ftirebiliriz? Bu rehberde, \u00fcretim ortam\u0131na haz\u0131r, g\u00fcvenli bir Keycloak \u00f6rne\u011fini Docker konteynerlerinde nas\u0131l hayata ge\u00e7irece\u011finizi, SSL\/TLS \u015fifrelemesinin t\u00fcm detaylar\u0131yla birlikte ele alaca\u011f\u0131z.","og_url":"https:\/\/fatihsoysal.com\/blog\/docker-run-ile-guvenli-keycloak-kurulumu-ssl-sertifikalariyla-adim-adim-rehber\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-10-22T12:32:00+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"32 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/docker-run-ile-guvenli-keycloak-kurulumu-ssl-sertifikalariyla-adim-adim-rehber\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/docker-run-ile-guvenli-keycloak-kurulumu-ssl-sertifikalariyla-adim-adim-rehber\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Docker Run ile G\u00fcvenli Keycloak Kurulumu: SSL Sertifikalar\u0131yla Ad\u0131m Ad\u0131m Rehber","datePublished":"2025-10-22T12:32:00+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/docker-run-ile-guvenli-keycloak-kurulumu-ssl-sertifikalariyla-adim-adim-rehber\/"},"wordCount":5756,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Docker"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/docker-run-ile-guvenli-keycloak-kurulumu-ssl-sertifikalariyla-adim-adim-rehber\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/docker-run-ile-guvenli-keycloak-kurulumu-ssl-sertifikalariyla-adim-adim-rehber\/","url":"https:\/\/fatihsoysal.com\/blog\/docker-run-ile-guvenli-keycloak-kurulumu-ssl-sertifikalariyla-adim-adim-rehber\/","name":"Docker Run ile G\u00fcvenli Keycloak Kurulumu: SSL Sertifikalar\u0131yla Ad\u0131m Ad\u0131m Rehber","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-10-22T12:32:00+00:00","description":"Kimlik ve eri\u015fim y\u00f6netimi modern uygulamalar\u0131n vazge\u00e7ilmez bir par\u00e7as\u0131d\u0131r ve bu alanda Keycloak g\u00fc\u00e7l\u00fc bir a\u00e7\u0131k kaynak \u00e7\u00f6z\u00fcm sunar. Ancak, Keycloak'u Docker \u00fczerinde \u00e7al\u0131\u015ft\u0131r\u0131rken g\u00fcvenli\u011fi sa\u011flamak, \u00f6zellikle hassas verilerin iletimi s\u00f6z konusu oldu\u011funda kritik \u00f6neme sahiptir. Peki, Docker run komutunu kullanarak SSL sertifikalar\u0131yla g\u00fcvenli bir Keycloak kurulumunu ad\u0131m ad\u0131m nas\u0131l ger\u00e7ekle\u015ftirebiliriz? Bu rehberde, \u00fcretim ortam\u0131na haz\u0131r, g\u00fcvenli bir Keycloak \u00f6rne\u011fini Docker konteynerlerinde nas\u0131l hayata ge\u00e7irece\u011finizi, SSL\/TLS \u015fifrelemesinin t\u00fcm detaylar\u0131yla birlikte ele alaca\u011f\u0131z.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/docker-run-ile-guvenli-keycloak-kurulumu-ssl-sertifikalariyla-adim-adim-rehber\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/docker-run-ile-guvenli-keycloak-kurulumu-ssl-sertifikalariyla-adim-adim-rehber\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/docker-run-ile-guvenli-keycloak-kurulumu-ssl-sertifikalariyla-adim-adim-rehber\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Docker Run ile G\u00fcvenli Keycloak Kurulumu: SSL Sertifikalar\u0131yla Ad\u0131m Ad\u0131m Rehber"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/32509","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=32509"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/32509\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=32509"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=32509"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=32509"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}