Use of Weak and Self-Signed SSL Certificates
est için Güvenilir Otomatik İmzalı SSL Sertifikaları ve Yerel Etki Alanları Nasıl Oluşturulur
Yerel test etki alanları ayarlayın ve hızlı, yerel test için güvenilir, otomatik olarak imzalanan bir sertifikayı etkinleştirin
Çoğu zaman, uygulamaları yerel olarak test etmek için localhost dışında etki alanlarımız olur ve ayrıca güvenilir kendinden imzalı SSL sertifikalarına da ihtiyacımız olur.
Otomatik Olarak İmzalanan Sertifika
Otomatik olarak imzalanan sertifika, güvenilen bir sertifika yetkilisi yerine onu oluşturan kişi tarafından imzalanan bir sertifikadır. Geliştirme sunucuları, sertifika maliyetini ve ayrıca yönetim ek yüklerini azaltmamıza yardımcı olacak otomatik olarak imzalanan sertifikalarla etkinleştirilebilir.
Varsayılan olarak, otomatik olarak imzalanan sertifika, tarayıcılarda web sitelerine erişirken bir sertifika doğrulama hatası atar, ancak riski kabul ederek gerçek sayfalara geçmemize izin verir. Bazı durumlarda, otomatik olarak imzalanan sertifikalar, yalnızca geçerli SSL ile çalışan bazı tarayıcı işlevlerini (ör. coğrafi konum gibi farklı tarayıcıların API’lerini test etme) test etmemize yardımcı olmaz.
Şimdi Windows’ta test etmek için yerel etki alanlarını ve güvenilir bir otomatik olarak imzalanan sertifikayı hızlı bir şekilde nasıl ayarlayacağımızı görelim. aynısı bazı ek adımlarla diğer sistemlerde de kullanılabilir.
Yerel Etki Alanları
Bazen uygulamamızı geliştirme ortamında test etmek için farklı etki alanlarına sahip olmamız gerekebilir. DNS kurulumu daha fazla zaman ve maliyet tüketir; yerel etki alanları, uygulamaları geliştirme ortamlarında hızlı bir şekilde test etmemize yardımcı olur.
Aşağıdaki test etki alanlarını tanımlayacağım — , , ve .myexample.com
sub.myexample.com
myexample1.com
Windows dosyasını düzenleyin, . Test etki alanlarını eşlemek için aşağıdaki girişleri ekleyin, böylece tanımlanan etki alanları aynı makine içindeki localhost üzerinde çalışan uygulamaya erişebilir.hosts
C:\Windows\System32\drivers\etc\hosts
127.0.0.1
127.0.0.1 myexample.com
127.0.0.1 sub.myexample.com
127.0.0.1 myexample1.com
Şimdi OpenSSL aracılığıyla otomatik olarak imzalanan bir sertifika oluşturalım.
Kök SSL Sertifikası Oluşturma
Bir RSA-2048 anahtarı oluşturun ve dosyaya kaydedin.rootCA.key
openssl genrsa -des3 -out rootCA.key 2048
“rootCA.key için parola girin” ifadesini aldığınızda, bir parola girin ve güvenli bir şekilde saklayın.
Oluşturulan anahtar aracılığıyla bir kök sertifika oluşturun.
openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1460 -out rootCA.pem
Geçerlilik günlerini gerektiği gibi değiştirin.
“Enter passphrase for rootCA.key” ifadesini aldığınızda, kök anahtarı oluştururken kullanılan parolayı girin.
Diğer isteğe bağlı bilgileri girin:
- Ülke Adı (2 harfli kod) [AU]: ABD
- Eyalet veya İl Adı (tam ad) [Bazı Eyaletler]: MN
- Yer Adı (örneğin, şehir) []: Eagan
- Kuruluş Adı (örneğin, şirket) [Internet Widgits Pty Ltd]: Teknoloji Forumu
- Kuruluş Birimi Adı (ör. bölüm) []: Pazarlama
- Ortak Ad (örneğin, sunucu FQDN’si veya SİZİN adınız) []: Yerel sertifika
- E-posta Adresi []:
[email protected]
Kök SSL Sertifikasına Güvenin:
Artık kök sertifika hazır. Yerel sistemdeki kök SSL sertifikasına güvenelim.
Aşağıdaki komutu komut isteminden çalıştırın (yükseltilmiş erişimle çalıştırın):
certutil -addstore -f "ROOT" rootCA.pem
Artık kök sertifika, Güvenilen Kök Sertifika Yetkilileri’nin bir parçası olarak eklenir.
Sertifikayı Sertifika Yöneticisi aracılığıyla doğrulayabilirsiniz veya .Certmgr.msc
Kök sertifika bile tarayıcılar aracılığıyla yönetilebilir: Chrome’da Gizlilik ve Güvenlik → Ayarlar → Güvenlik → Sertifikaları Yönetme → Güvenilen Kök Sertifika Yetkilileri’ne gidin.
Sertifikayı içeri/dışarı aktarabilir ve kaldırabilirsiniz (sertifikalar şu yolla içe aktarılmışsa kaldırılamaz):Certmgr.msc
Firefox’u yerel test için kullanırsanız, Windows sertifika deposundaki kök sertifikaları dikkate almaz (Chrome ve Edge, Windows sertifika deposundaki kök sertifikalara başvurur). Otomatik olarak imzalanan kök sertifika Firefox’a ayrı olarak aktarılmalıdır.
Seçenekler→ Gizlilik ve Güvenlik → Güvenlik → Sertifikaları’na gidin → Sertifikaları görüntüleyin.
Sertifikaları içeri/dışarı aktarabilir ve kaldırabilirsiniz. Önceki adımlarda oluşturulan Kök CA sertifikasını içeri aktarın. “Web sitelerini tanımlamak için bu CA’ya güven”i seçin.
Kök Sertifika ile SSL SAN Sertifikası Oluşturma
Kök sertifikaya artık güvenilmektedir. Yerel alan adlarımızı desteklemek için bir SSL sertifikası verelim – , , ve test için.myexample.com
sub.myexample.com
myexample1.com
localhost
Sertifika oluşturulurken yapılandırma ayrıntılarının kullanılabilmesi için yeni bir OpenSSL yapılandırma dosyası oluşturun.server.csr.cnf
[req]
default_bits = 2048
prompt = no
default_md = sha256
distinguished_name = dn
[dn]
C=US
ST=MN
L=Eagan
O=Tech Forum
OU=Marketing
[email protected]
CN = localhost
Create a file with a list of local SAN domains:v3.ext
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names[alt_names]
DNS.1 = myexample.com
DNS.2=sub.myexample.com
DNS.3=myexample1.com
DNS.4=localhost
Create a private key and certificate-signing request (CSR) for the localhost certificate.
openssl req -new -sha256 -nodes -out server.csr -newkey rsa:2048 -keyout server.key -config server.csr.cnf
This private key is stored on .server.key
Let’s issue a certificate via the root SSL certificate and the CSR created earlier.
openssl x509 -req -in server.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out server.crt -days 500 -sha256 -extfile v3.ext
When it says “Enter passphrase for rootCA.key,” enter the passphrase used while generating the root key.
The output certificate is stored in a file called .server.crt
Enable the SSL Certificate for the Local Server
Let’s now enable the certificate for the local server. I’m going to configure the certificate with the Express.js application to enable the trusted SSL communication.
app.js
var express = require('express')
const path = require('path')
const https = require('https');
const fs = require('fs');var app = express ()app.get('/index.html', function (req, res) {res.sendFile('index.html', {
root: path.join(__dirname, '.')
})
})https.createServer({
key: fs.readFileSync('ssl\\server.key'),
cert: fs.readFileSync('ssl\\server.crt')
}, app)
.listen(443, function () {
console.log('Example app listening on port 443! Go to https://localhost/')
})
Now the certificate is trusted from the browser for the test domains , , , and .myexample.com
sub.myexample.com
myexample1.com
localhost
Güvenilir, otomatik olarak imzalanan sertifika, yerel etki alanlarıyla birlikte geliştirme ve ilk test için kullanılabilir. Bu, güvenilen SSL sertifikası gerektiren bazı senaryoları test etmek için güvenilen yerel etki alanlarını hızlı bir şekilde etkinleştirmemize yardımcı olacaktır.