Linux’ta mkcert kullanarak Yerel Olarak Güvenilir SSL Sertifikaları oluşturun

Yerel geliştirme projeleriniz için güvenilir olmayan SSL sertifikaları kullanmaktan bıktınız mı? Gizemli prosedürler ve komutlarla kendi Sertifika Yetkilinizi (CA) sürdürmek kesinlikle baş belasıdır. Bu yazıda, CA olmadan Yerel geliştirme makinenizde güvenilir SSL sertifikalarını kullanmanın basit bir yolunu okuyacağız.

mkcert, Filippo Valsorda tarafından Go’da yazılmış, herhangi bir yapılandırma olmadan istediğiniz adla yerel olarak güvenilir geliştirme sertifikaları oluşturmak için yazılmış basit bir sıfır yapılandırma aracıdır. Geçerli bir DNS kaydı olmayan yerel adlar için güvenilir Sertifika Yetkililerinden sertifika almak imkansız olduğundan bu size yardımcı olacaktır. Öyleyse mkcert’i kurmak ve kullanmak için başlayalım.

Ubuntu / Debian’a mkcert’i kurma

Herhangi bir Ubuntu veya Debian sistemine mkcert kurmak için önce certutil bağımlılıklarını kurun:

sudo apt-get update
sudo apt install wget libnss3-tools

Bu yüklendikten sonra, Github’dan mkcert ikili paketini indirin. En son sürüm için mkcert sürümleri sayfasını kontrol edin.

curl -s https://api.github.com/repos/FiloSottile/mkcert/releases/latest| grep browser_download_url  | grep linux-amd64 | cut -d '"' -f 4 | wget -qi -

Dosya indirildikten sonra, dosyayı çalıştırılabilir yapın ve bu dosyayı /usr/local/bin altına yerleştirin.

mv mkcert-v*-linux-amd64 mkcert
chmod a+x mkcert
sudo mv mkcert /usr/local/bin/

CentOS / Fedora Sistemine mkcert yükleme

CentOS ve Fedora’da mkcert kurulumu Ubuntu/Debian kurulumuna benzer. Önce yalnızca nss-tools araçlarını yüklemeniz gerekir.

sudo yum install nss-tools

Kurulduktan sonra, Ubuntu kurulumundaki gibi ikili paketi indirin.

curl -s https://api.github.com/repos/FiloSottile/mkcert/releases/latest| grep browser_download_url  | grep linux-amd64 | cut -d '"' -f 4 | wget -qi -

Dosya indirildikten sonra, dosyayı çalıştırılabilir yapın ve ikili dosyayı /usr/local/bin altına yerleştirin.

mv mkcert-v*-linux-amd64 mkcert
chmod a+x mkcert
sudo mv mkcert /usr/local/bin/

Sürümü kontrol ederek başarılı kurulumu onaylayın:

$ mkcert --version
v1.4.3

Yerel olarak güvenilir SSL sertifikaları oluşturmak için mkcert kullanımı

mkcert aşağıdaki kök depoları destekler:

  • macOS sistem deposu
  • Windows sistem deposu
  • Şunları sağlayan Linux varyantları:
    • update-ca-trust (Fedora, RHEL, CentOS)
    • update-ca-certificates (Ubuntu, Debian)
  • Firefox (yalnızca macOS ve Linux)
  • Chrome and Chromium
  • Java (JAVA_HOME ayarlandığında)

mkcert için yardım sayfasına ulaşmak için, --helpparametresini kullanın.

Usage of mkcert:

$ mkcert -install
Install the local CA in the system trust store.

$ mkcert example.org
Generate "example.org.pem" and "example.org-key.pem".

$ mkcert example.com myapp.dev localhost 127.0.0.1 ::1
Generate "example.com+4.pem" and "example.com+4-key.pem".

$ mkcert '*.example.com'
Generate "_wildcard.example.com.pem" and "_wildcard.example.com-key.pem".

$ mkcert -pkcs12 example.com
Generate "example.com.p12" instead of a PEM file.

$ mkcert -uninstall
Uninstall the local CA (but do not delete it).

Change the CA certificate and key storage location by setting $CAROOT,
print it with "mkcert -CAROOT".

CA kök dizininizi aşağıdakileri kullanarak alabilirsiniz:

$ mkcert -CAROOT
/root/.local/share/mkcert

Yerel CA’yı sistem güven deponuza kurarak başlamanız gerekir.

# mkcert -install
The local CA is now installed in the system trust store! ⚡️
The local CA is now installed in the Firefox and/or Chrome/Chromium trust store (requires browser restart)! 🦊

İşiniz bittiğinde, alan adlarınız için SSL sertifikaları oluşturmaya başlayabilirsiniz. Örnek olarak, aşağıdaki adlar için geçerli yeni bir sertifika oluşturacağım:

- "mydomain.com"
- "*.mydomain.co"
- "myapp.net"
- "localhost"
- "127.0.0.1"
- "::1"

Çıktı aşağıdaki gibi olacaktır:

# mkcert mydomain.com '*.mydomain.co' myapp.net localhost 127.0.0.1 ::1
Created a new certificate valid for the following names 📜
 - "mydomain.com"
 - "*.mydomain.co"
 - "myapp.net"
 - "localhost"
 - "127.0.0.1"
 - "::1"

Reminder: X.509 wildcards only go one level deep, so this won't match a.b.mydomain.co ℹ️

The certificate is at "./mydomain.com+5.pem" and the key at "./mydomain.com+5-key.pem" ✅

It will expire on 11 January 2024 🗓

Sertifikanın içeriğini görüntüleyebilmeniz gerekir:

# cat ./mydomain.com+5.pem
-----BEGIN CERTIFICATE----- MIIEVDCCArygAwIBAgIRAL2vyvexRiXjWMWF688t9RswDQYJKoZIhvcNAQELBQAw WTEeMBwGA1UEChMVbWtjZXJ0IGRldmVsb3BtZW50IENBMRcwFQYDVQQLDA5yb290 QHVidW50dS0wMTEeMBwGA1UEAwwVbWtjZXJ0IHJvb3RAdWJ1bnR1LTAxMB4XDTE4 MDgxNTA2MjIzMFoXDTI4MDgxNTA2MjIzMFowQjEnMCUGA1UEChMebWtjZXJ0IGRl dmVsb3BtZW50IGNlcnRpZmljYXRlMRcwFQYDVQQLDA5yb290QHVidW50dS0wMTCC ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMg6ByQe5vjX65HYoOe/QyRo yotQOvBX8k8RJxQSXmTYsTGeYjTtlfLlubJ/AmGovzfPK6CmSWkTK6czENsR2DBH mAHyyu1PdeJihnBZSNAlkEIGNPZvxqKlNZvqe1gxMntHG569YKBl52EaiMiDu3D0 yk+dvIHuCtvGseFUxRwnc4gq4B6yhyGR6y1dmL7eZkrIAgMHxdktavThscvJ3N7A N4dY7iackLiajqjRzT6/iVR0NRRbqxDlgsfrq6MGkAnri56LuZBZmyF85c+kpvuN bHEAAUvxziHORX0+NmBedcajr16rYV4+/IJXbY2llLkprRG2Ar8CqrblH2uBX+8C AwEAAaOBrTCBqjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEw DAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBRLV1qAcMY0/atqn4AS3sWCOoo4OTBU BgNVHREETTBLggxteWRvbWFpbi5jb22CDSoubXlkb21haW4uY2+CCW15YXBwLm5l dIIJbG9jYWxob3N0hwR/AAABhxAAAAAAAAAAAAAAAAAAAAABMA0GCSqGSIb3DQEB CwUAA4IBgQBaQcM7oe4TNQfdwvkZk0rTK1aoXteBF7JqxdhFqL1wWNAO+HTsRuzO My19o3mL+9SVjuv1NCEUCVGXQ5FK+HFdBdWm1cAKzHM/j6pwo0k60K9kIfyQZfsh GjDDtrE+86T16JwWTozFyyZHDAhskQuudwha4pZWgrwZudAdqaAOQW59+8s3gYaj Wd10hiptLbAnhd3DKPgnhjgpIT6zvtJ7gvm8fXVwOyoPfbIm3kl94rIa0BVrhmeA ma227ehRK0iUwA1oclZ4dbRfcjNgL79ryVgffOgTD1O3mWzwvGenD7/oG9FZQ2fK WPdh4gdV+f5fZ+GiLA2KPIShrReFlt70pUJDkDHT0AEuSiFZQ5vVc3KV/3k3HUTJ tmkiePMoMGB/kEVyo1is3NDUBkofMTYSFjVdSgZ9rrefoUe/tfqBeh5IV+ZRUv3p kSsXe0sBnqtSa5ExQ+Uv2X6/jEBBEAoYN6GmL+poV06Ra6/nnXPnaRLkQ/8CT8sp xKtvdnyDa6Y= -----END CERTIFICATE-----

Özel anahtar:

ls mydomain.com+5-key.pem

mkcert sertifikasını test etme

Şimdi basit bir Nginx yapılandırma dosyası kullanarak mkcert sertifikasını test edelim.

### Ubuntu / Debian ###
sudo apt update
sudo apt install nginx

### CentOS / Fedora ###
sudo yum install nginx
sudo systemctl enable --now nginx

Basit bir web sayfası oluşturun

# vim /etc/nginx/conf.d/test.conf 
server {
   listen 80;
   server_name mydomain.com myapp.net;
   root /var/www/test;
}

server {
   listen *:443 ssl http2;
   root /var/www/test;
   server_name mydomain.com myapp.net;
   ssl_certificate /root/mydomain.com+5.pem; 
   ssl_certificate_key /root/mydomain.com+5-key.pem;
}

/etc/hosts dosyanızın kullanılmış etki alanları için bir kaydı olduğundan emin olun.

127.0.0.1 myapp.net
127.0.0.1 mydomain.com

Tarayıcınızı açın ve sağlanan etki alanını kullanın, yeşil bir çubuk almalısınız.

Yazının orijinalini buradan okuyabilirsiniz.