Localhost'ta Apache için HTTPS'ye nasıl izin verebilirim?


Yanıtlar:


135

Ben sadece denedim - Windows benim localhost Apache bazı geliştirme kodunu test etmek gerekiyordu . Bu WAAAY olması gerekenden daha zordu. Ama burada çok saç tokasından sonra çalışmayı başaran adımlar ...

Apache kurulumumun openssl.exeyararlı olduğunu gördüm . Bir kopyanız yoksa indirmeniz gerekir. Kopyam, Apache2\binaşağıda referans olarak gördüğüm klasördeydi.

Adımlar:

  1. Apache conf klasörünüze yazma izniniz olduğundan emin olun
  2. Apache2\confKlasörde bir komut istemi açma
  3. tip
    ..\bin\openssl req -config openssl.cnf -new -out blarg.csr -keyout blarg.pem
  4. Aşağıdakiler hariç tüm soruları boş bırakabilirsiniz:

    • PEM Parolası: "parola" gibi geçici bir parola
    • Ortak Ad: sunucunuzun ana bilgisayar adı

  5. Bu tamamlandığında, şunu yazın
    ..\bin\openssl rsa -in blarg.pem -out blarg.key

  6. Kendinden imzalı sertifikanızı şunu yazarak oluşturun:
    ..\bin\openssl x509 -in blarg.csr -out blarg.cert -req -signkey blarg.key -days 365

  7. Apache'nin conf\httpd.confdosyasını açın ve SSL modülünün etkinleştirildiğinden emin olun - bu satırın başında karma olmamalıdır:
    LoadModule ssl_module modules/mod_ssl.so

  8. Bazı Apache yüklemeleri SSL yapılandırmasını ayrı bir dosyaya yerleştirir. Öyleyse, SSL conf dosyasının dahil edildiğinden emin olun. Benim durumumda bu hattı uncomment zorunda kaldı:
    Include conf/extra/httpd-ssl.conf

  9. SSL yapılandırmasında httpd-ssl.confaşağıdaki satırları güncellemem gerekti:

    • Güncelleme
      SSLSessionCache "shmcb:C:\Program Files (x86)\Zend\Apache2/logs/ssl_scache(512000)"
      için
      SSLSessionCache "shmcb:C:/Progra\~2/Zend/Apache2/logs/ssl_scache(512000)"
      (modül şaşırtmak yolunda parantez, biz de onları kaçmak gerekir)
    • DocumentRoot - bunu web dosyalarınız için klasöre ayarlayın
    • ServerName - sunucunun ana bilgisayar adı
    • SSLCertificateFile "conf/blarg.cert"
    • SSLCertificateKeyFile "conf/blarg.key"

  10. Apache'yi yeniden başlatın.

  11. https://localhost/Tarayıcınıza yüklemeyi deneyin .

Umarım şimdiye kadar yapmışsınızdır. Bu yayını başka yararlı bilgilerle güncellemekten çekinmeyin.

(Ekran görüntüleri Neil Obremski ve yardımcı makalesinin izniyle - şimdi oldukça güncel değil.)


2
Teşekkürler. Ayrıca, geçerli yollara ErrorLog, TransferLog ve CustomLog yönergelerini düzenlemek zorunda kaldım, aksi takdirde Apache başlamazdı.
Tamlyn

1
Herhangi bir nedenle, talimatlar artık çalışmıyor veya eksik
Jacobian

6
Çalışmak için httpd.conf da aşağıdaki uncomment vardı: LoadModule socache_shmcb_module modülleri / mod_socache_shmcb.so
erik

1
Çalıştırmak için iki adım daha yaptım, modül LoadModule socache_shmcb_module modülleri / mod_socache_shmcb.so ve httpd-ssl.conf modülünde 250 günlük ssl günlük yolunu düzeltiyorum, CustomLog ".apache24 / logs / ssl_request.log" \
Wasim A .

5
.Pem ve .key dosyalarını oluşturmak için 2. adımda 2 ortam değişkeni ayarlamam gerekiyordu: OPENSSL_CONF = C: \ path \ to \ apache \ Apache2.4.4 \ conf \ openssl.cnf set RANDFILE = C: \ \ apache \ Apache2.4.4 \ conf \ .rnd
eosphere yolu

57

Bunun için ngrok ( https://ngrok.com/ ) kullanıyorum . ngrok bir komut satırı aracıdır ve localhost için bir tünel oluşturur. Hem http hem de https bağlantısı oluşturur. İndirdikten sonra aşağıdaki komutun çalıştırılması gerekir:

ngrok http 80

(Sürüm 2'de sözdizimi şöyledir: ngrok http 80. Sürüm 2'de herhangi bir bağlantı noktası tünellenebilir.)

Birkaç saniye sonra iki url verir:

http://a_hexadecimal_number.ngrok.com
https://a_hexadecimal_number.ngrok.com

Şimdi, her iki url de yerel ana makineye işaret ediyor.


1
@ nudk'un açık kaynak kodu, bunu kendi sunucumuzda değişiklik yapmadan barındıracak şekilde çalışıyor mu? Değilse, kullanıcıların isteklerini ngrok gibi harici bir ana bilgisayara yönlendirmek uygun olmadığı için hemen hemen bir şovcu.
Pacerier

2
@Pacerier Sunucuda kullanmayı düşünmüyorum. Bunu localhost üzerinde kullanıyorum (Bcz ağ sağlayıcım bana dinamik bir IP veriyor). Paypal IPN testi için ilk kez kullandım ve mükemmel çalıştı. Birinin neden sunucuda ve hangi amaçla kullanacağını merak ediyorum.
15'te

@sudip, Amaç açıktır, HTTP üzerinde çalışan kodun HTTPS ile çalışmasına izin vermek için ekstra kodlamaya gerek yoktur.
Pacerier

1
Bu yararlı olsa da, dev makinenize açık internete erişim izni vermek inanılmaz derecede güvensiz görünüyor. Bunun gibi bir şey kullanmak, güvenlik bilincine sahip bir işverene kovulmanızı sağlar.
Andy M

@Lezeetli lezzetli lezzetli . Daha önce V 1'de tamamen ücretsizdi. Ancak, http ve https bağlantı noktaları v 2'de hala ücretsiz (herhangi bir bağlantı noktası kısıtlamasının ücretsiz plan olup olmadığını bilmiyorum). Ücretsiz planı buradan kontrol edin: ngrok.com/product#pricing
sudip

24

İşte bunu yapmanın en basit yolu

önce bu server.crt ve server.key dosyalarını (ekte bul) apache / conf / ssl dizininize kopyalayın

sonra httpd.conf dosyasını açın ve aşağıdaki satırı ekleyin

Listen 80
Listen 443

NameVirtualHost *:80
NameVirtualHost *:443

<VirtualHost *:443>
    DocumentRoot "d:/wamp/www"  #your wamp www root dir
    ServerName localhost
    SSLEngine on
    SSLCertificateFile "d:/wamp/bin/apache/Apache2.4.4/conf/ssl/server.crt"
    SSLCertificateKeyFile "d:/wamp/bin/apache/Apache2.4.4/conf/ssl/server.key"
</VirtualHost>

3
Ayrıca (/etc/apache2/httpd.conf)
Alexey

17
* .Crt * .key dosyalarını kendi kaynaklarınızı oluşturmak yerine güvenilir olmayan kaynaktan indirmenin ne kadar güvenli / tehlikeli olduğunu merak ediyorum.
Petr Peller

4
@PetrPeller yerel kalkınma için https kuruyoruz, bu yüzden neden güvenli / tehlikeli merak ediyorum
Anil Gupta

7
Bu dosyaların nasıl oluşturulacağına dair bir açıklama harika olurdu. Çünkü bilinmeyen bir kaynaktan dosya indirmek kötü bir uygulamadır, ama aynı zamanda bu tür bağlantılar bir noktada kırılacaktır.
Stephan Vierkant


13

Web sunucunuza ve web sunucunuzdan gönderilen bilgilerin güvenliğini korumak için, istemciler ve sunucu arasındaki iletişimin şifrelenmesini sağlamak iyi bir fikirdir. Buna genellikle SSL denir .

Şimdi Apache2'de kendinden imzalı bir sertifika ile HTTPS kuralım. İzlemeniz gereken adımları listeleyeceğim:

  • Apache2 web sunucusunu makinenize kurun. Linux makinesi için terminali açın ve yazın

sudo apt-get install apache2

  • Başarılı kurulumdan sonra, komutu yürüterek apache2 hizmetinin durumunu kontrol edin

sudo service apache2 durumu

Çıktı almalı

apache2 servis durumu

  • Tarayıcıya gidin ve yazın

http: // localhost: 80

Bunun gibi apache2 için varsayılan sayfa aldığınızdan emin olun.

apache2'nin varsayılan çıktısı

  • Bir web bağlantısını şifrelemek için CA'dan (sertifika yetkilisi) sertifika almamız gerekir veya kendinden imzalı sertifikalar kullanabiliriz. Aşağıdaki komutu kullanarak kendinden imzalı bir sertifika oluşturalım.

openssl req -x509 -yeni anahtar rsa: 2048 -kod mykey.key -out mycert.pem -gün 365-düğüm

Lütfen bilgileri aşağıda gösterildiği gibi doldurun.

openssl kullanarak kendinden imzalı sertifika oluştur

mykey.key ve mycert.pem , mevcut çalışma dizininizde oluşturulmalıdır.

  • Ortak bir yerde sertifikaları ve anahtarları taşımak güzel olurdu ve apache2 web sunucusunun bunları bulması kolay olacaktır. Şimdi aşağıdaki komutları uygulayalım

sudo cp mycert.pem / etc / ssl / certs

sudo cp mykey.key / etc / ssl / private

  • Sunucunuzda SSL modunu etkinleştirelim

sudo a2enmod ssl

Bu şekilde çıktı vermelidir

SSL'yi etkinleştir

  • Apache2'yi yukarıda oluşturduğumuz kendinden imzalı sertifika ve anahtarı kullanacak şekilde yapılandıralım.

sudo vi /etc/apache2/sites-available/default-ssl.conf

Lütfen bu iki satırı bulun ve bunları sertifika ve anahtar yollarınızla değiştirin.

ilk

Varsayılan-conf

final

yapılandırma değişikliklerinden sonra

  • Siteyi etkinleştir

cd / etc / apache2 / mevcut siteler /

sudo a2ensite default-ssl.conf

  • Apache2 hizmetini yeniden başlatın

sudo service apache2 yeniden başlatma

  • HTTPS'de apache2 web sunucusunu doğrulayın. Tarayıcınızı tekrar açın ve yazın

https: // localhost: 443

Sunucuyu kendinden imzalı bir sertifika ile yapılandırdığımızdan, görüntülemek üzere olduğunuz sayfanın güvenli olmadığı uyarısıyla böyle bir şey çıkarmalıdır.

resim açıklamasını buraya girin

  • Tebrikler, apache2'nizi HTTPS uç noktasıyla yapılandırdınız, şimdi gelişmiş -> istisna ekle -> güvenlik istisnasını onaylayın , varsayılan sayfayı tekrar göreceksiniz.

istisna ekledikten sonraki sayfa


Yapabilirsem herhangi bir yapılandırma dosyasını düzenlememeyi tercih ederim, bu yüzden default-ssl.confolduğu gibi bıraktım . Ben adlandırmak üzereydi mycertiçin ssl-cert-snakeoilsadece o kullanılan böylece bu dosya zaten var ama! Böylece Debian'a iki adımı güvenle atlayabildim.
Rolf

@Rolf Size katılıyorum ama üretimde, her zaman yeni bir sertifika ve anahtar kullanın. Sadece nasıl yaratılabileceğini göstermek için Debian için 2 ek adım ekledim. Teşekkürler :)
Dinesh Kumar

Uyarıları görmemek için kendinden imzalı sertifikamı sertifika yetkilisi olarak eklememin bir yolu var mı?
Aaron Franke

9

Windows + Apache 2.4, örneğin:

  1. httpd.confdosyanızdaki ssl_module uncomment .

    LoadModule ssl_module modules/mod_ssl.so
    
  2. 443 portunu tıpkı 80 port gibi dinleyin httpd.conf.

    Listen 80
    Listen 443
    
  3. uncomment httpd.confDosyanıza Sanal ana makineleri dahil et .

    # Virtual hosts
    Include conf/extra/httpd-vhosts.conf
    
  4. içine VirtualHost ekleyin conf/extra/httpd-vhosts.conf

    <VirtualHost _default_:443>
        DocumentRoot "D:/www"  #your site directory path
        ServerName localhost
        #ServerAlias localhost.com localhost2.com
        SSLEngine on
        SSLCertificateFile "${SRVROOT}/conf/ssl/server.crt"
        SSLCertificateKeyFile "${SRVROOT}/conf/ssl/server.key"
        <Directory "D:/www">
            Options -Indexes +FollowSymLinks +ExecCGI
            AllowOverride All
            Require all granted
        </Directory>
    </VirtualHost>
    

yalnızca bağlantı noktası numarası 443ve SSL......satırları normal http yapılandırmasından farklıdır.

yapılandırma dosyasını kaydedin ve apache servisini yeniden başlatın. o zaman https: // localhost /

Web tarayıcısı sizi ilk kez güvensiz olduğu konusunda uyaracaktır, sadece devam etmeyi seçin.


Bu benim için XP Home, Apache 2.4'te çalıştı. Bir önceki gönderiden 2 sertifika dosyasını kopyaladı (Anil Gupta tarafından). Uncommented mod_ssl ve httpd.conf içine httpd-vhosts.conf dahil, httpd-vhosts.conf içine Anil Gupta'nın VirtualHost yönergesini (bazı yollar ayarlanmış olarak) ekledi.
Ocak 16:16

7

Aslında bir openssl kurulumuna sahip olduğunuzu varsayarsak oldukça kolaydır. (Hangi platformdasın?)

Linux / solaris / mac os / x'de olduğunuzu varsayarsak, Van'ın Apache SSL / TLS mini-NASIL belgesinin burada çoğaltmayacağım mükemmel bir yolu var.

Ancak yönetici özeti, kendinden imzalı bir sertifika oluşturmanız gerektiğidir. Muhtemelen geliştirme için localhost için apache çalıştırdığınızdan (yani genel bir web sunucusu değil), kendinden imzalı sertifikaya güvenebileceğinizi ve tarayıcınızın size atacağı uyarıları göz ardı edebileceğinizi bileceksiniz.


Merhaba, Windows işletim sistemi üzerinde çalışıyorum. Kendinden imzalı sertifikaya gelince, sertifikayı indirmem veya başka bir yolla mı indirmem gerekiyor?
KennC.

3
Hayır! Kendinden imzalı sertifikayı kendiniz yapacaksınız. Apache httpd + ssl kurulumunuz var mı? Bunu yapmak için SSL'ye ihtiyacınız olacak. Bu site: rubayathasan.com/tutorial/apache-ssl-on-windows , ssl'nin pencerelere gitmesi hakkında iyi bilgiye sahiptir. Bazı komut satırı çalışmaları yapacaksınız, ama bu yine de sizin için iyi. :-)
Pete Clark

3
Bağlantılar öldü :(
kpuccino

Evet - ölü gibi görünüyor. Bu sizin için internet ... Ancak, @kayakinkoder tarafından başvurulan CentOS Wiki'ye bağlantı da iyi: wiki.centos.org/HowTos/Https Eğer bir mac kullanıyorsanız, bu yazı da makul görünüyor : gist . github.com/nrollr/4daba07c67adcb30693e
Pete Clark

4

Bu Apache2 ile benzer Ubuntu, Nane çalışması olmalıdır

Güzel bir rehber, bu yüzden bunu takip etmek

https://www.digitalocean.com/community/tutorials/how-to-create-a-ssl-certificate-on-apache-for-ubuntu-14-04

ve ssl.conf'unuzu böyle veya benzeri bir şekilde bırakarak

<VirtualHost _default_:443>
        ServerAdmin your@email.com
        ServerName localhost
        ServerAlias www.localhost.com

        DocumentRoot /var/www


    SSLEngine on
    SSLCertificateFile /etc/apache2/ssl/apache.crt
    SSLCertificateKeyFile /etc/apache2/ssl/apache.key

alabilirsin.

Umarım linuxer için bu yardım


2

Çok basit,

sadece aşağıdaki komutları çalıştırın

sudo a2enmod ssl

sudo service apache2 restart

sudo a2ensite default-ssl.conf

Hepsi bu, işiniz bitti.

SSL'yi zorlamak istiyorsanız (her zaman https kullanmak için), dosyayı düzenleyin:

sudo nano /etc/apache2/sites-available/000-default.conf

ve bu bir satırı ekle

<VirtualHost *:80>
        . . .

        Redirect "/" "https://your_domain_or_IP/"

        . . .
</VirtualHost>

sonra tekrar başlat

sudo service apache2 restart

Ve systemctl reload apache2peşinden koşman gerek sudo a2ensite default-ssl.conf.
e kadar

2

2020 Güncellemesi

Bu cevabı kendimle mücadele ettiğim için gönderiyorum ve Chrome, güvenliklerini, cevap olarak gönderildiklerinde gerekli olmayan birçok gönderinin olmadığı Konu Alternatif Adı gerektirerek güncelledi . WAMP'ın zaten kurulu olduğunu varsayıyorum.

AŞAMA 1

OpenSSL Light'ı indirin ve yükleyin


** 2. ADIM (İsteğe bağlı) **

Bu bölüm isteğe bağlı olmasına rağmen, daha sonra komutların yürütülmesini kolaylaştırır. Bu adımı atlarsanız, komutu yürüteceğiniz openssl.exe dosyasının tam yolunu sağlamanız gerekir. Ayarlamayı tercih ediyorsanız Ortam Değişkenleri'nde openssl.exe yolunu güncelleyin.

Ortam Değişkenleri -> Sistem Değişkenleri -> Yol -> Düzenle -> Yeni -> c: \ Program Dosyaları \ OpenSSL-Win64 \ bin


**AŞAMA 3**

Adlı bir klasör oluşturun “anahtar” in c:/wamp64/bin/apache/apache2.4.27(your version number)/conf/dizinde.

İçeriklerle CA MyCompanyCA.cnf için yapılandırma dosyası oluşturun (ihtiyaçlarınıza göre değiştirebilirsiniz):

[ req ]
distinguished_name  = req_distinguished_name
x509_extensions     = root_ca

[ req_distinguished_name ]
countryName             = Country Name (2 letter code)
countryName_min         = 2
countryName_max         = 2
stateOrProvinceName     = State or Province Name (full name)
localityName            = Locality Name (eg, city)
0.organizationName      = Organization Name (eg, company)
organizationalUnitName  = Organizational Unit Name (eg, section)
commonName              = Common Name (eg, fully qualified host name)
commonName_max          = 64
emailAddress            = Email Address
emailAddress_max        = 64

[ root_ca ]
basicConstraints            = critical, CA:true

Web sunucusu sertifikanız için MyCompanyLocalhost.ext uzantı yapılandırma dosyasını oluşturun :

subjectAltName = @alt_names
extendedKeyUsage = serverAuth

[alt_names]
DNS.1   = localhost
DNS.2   = mycy.mycompany.com

** 4.ADIM **

Anahtarı ve sertifikaları oluşturmak için şu komutları verilen sırayla yürütün:

openssl req -x509 -newkey rsa:2048 -out MyCompanyCA.cer -outform PEM -keyout MyCompanyCA.pvk -days 10000 -verbose -config MyCompanyCA.cnf -nodes -sha256 -subj "/CN=MyCompany CA"
openssl req -newkey rsa:2048 -keyout MyCompanyLocalhost.pvk -out MyCompanyLocalhost.req -subj /CN=localhost -sha256 -nodes
openssl x509 -req -CA MyCompanyCA.cer -CAkey MyCompanyCA.pvk -in MyCompanyLocalhost.req -out MyCompanyLocalhost.cer -days 10000 -extfile MyCompanyLocalhost.ext -sha256 -set_serial 0x1111

Sonuç olarak, MyCompanyCA.cer , MyCompanyLocalhost.cer ve MyCompanyLocalhost.pvk dosyalarına sahip olacaksınız .


**ADIM 5**

Yükleme MyCompanyCA.cer altında

Denetim Masası -> Kullanıcı Sertifikalarını Yönet -> Güvenilen Kök Sertifika Yetkilileri -> Sertifikalar

MyCompanyLocalhost.cer'ı kurmak için sadece çift tıklayın.


** 6.ADIM **

Aşağıdaki 3 satırı açın c:/wamp64/bin/apache/apache2.4.27(your version number)/conf/httpd.confve yorumu kaldırın (# işaretini kaldırın) :

LoadModule ssl_module modules/mod_ssl.so
Include conf/extra/httpd-ssl.conf
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so

** 7.ADIM **

c:/wamp64/bin/apache/apache2.4.37/conf/extra/httpd-ssl.confTüm parametreleri aşağıda gösterilenlerle açın ve değiştirin:

Directory "c:/wamp64/www"
DocumentRoot "c:/wamp64/www"
ServerName localhost:443
ServerAdmin admin@example.com
ErrorLog "c:/wamp64/bin/apache/apache2.4.27/logs/error.log"
TransferLog "c:/wamp64/bin/apache/apache2.4.27/logs/access.log"
SSLCertificateFile "c:/wamp64/bin/apache/apache2.4.27/conf/key/MyCompanyLocalhost.cer"
SSLCertificateKeyFile "c:/wamp64/bin/apache/apache2.4.27/conf/key/MyCompanyLocalhost.pvk"
SSLSessionCache "shmcb:c:/wamp64/bin/apache/apache2.4.27/logs/ssl_scache(512000)"
CustomLog "c:/wamp64/bin/apache/apache2.4.27/logs/ssl_request.log" \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

Not: Bu zor kısmı. Bu dosyayı düzenlerken küçük bir hata yaparsanız, SSL çalışmaz. Düzenlemeden önce bir kopyasını alın.


** 8.ADIM **

Wamp ve Chrome'u yeniden başlatın. Localhost artık güvende: https: // localhost


Linux için bir rehberiniz var mı?
Aaron Franke

Maalesef bilmiyorum.
CodeWarrior

1

CentOS için bu HowTo'u takip etmek kolaydı ve sadece 5 dakika sürdü: https://wiki.centos.org/HowTos/Https

Burada her adımı ayrıntılandırmayacağım, ancak ana adımlar:

1.) Zaten kurulmamışsa apache için openssl modülünü kurun

2.) Kendinden imzalı bir sertifika oluşturun

--Bu noktada, https: // localhost'u başarıyla ziyaret edebilmelisiniz

3.) Gerekirse sanal bir ana bilgisayar kurun


1

Bu, Apache24 ile Windows 10'da çalıştı:

1 - Bunu alt kısmına ekleyin C:/Apache24/conf/httpd.conf

Listen 443
<VirtualHost *:443>
    DocumentRoot "C:/Apache24/htdocs"
    ServerName localhost
    SSLEngine on
    SSLCertificateFile "C:/Apache24/conf/ssl/server.crt"
    SSLCertificateKeyFile "C:/Apache24/conf/ssl/server.key"
</VirtualHost>

2 - server.crtve server.keydosyalarını C:/Apache24/conf/sslklasöre ekleyin . Bu 2 dosyayı bulmak için bu sayfadaki diğer yanıtlara bakın.

Bu kadar!


Evet bu işe yarıyor. Sertifika oluşturmak için StephanieQ adım 1 - 3 ve cygwin ile * .crt dosyasını oluşturmak için "openssl x509 -req -in server.csr -signkey server.key -out server.crt" kullandım.
b3wii

Elimde olmayan bir httpd.confdosya var mı? Bu metni içeri koyduğumda apache2.confInvalid command 'SSLEngine', perhaps misspelled or defined by a module not included in the server configuration
Aaron Franke

1

tl; Dr.

ssh -R youruniquesubdomain:80:localhost:3000 serveo.net

Ve yerel ortamınıza https://youruniquesubdomain.serveo.net adresinden erişilebilir.

Serveo en iyisi

  • Kayıt yok.
  • Yükleme yok.
  • HTTPS vardır.
  • Dünya çapında erişilebilir.
  • Özel bir düzeltme, alt alan adı belirtebilirsiniz.
  • Kendini barındırabilirsiniz, böylece kendi alan adınızı kullanabilir ve hizmet kapansa bile geleceğin kanıtı olabilirsiniz.

Bu hizmeti bulduğumda inanamadım. Her şeyi sunar ve kullanımı en kolay olanıdır. Her sorun için bu kadar kolay ve acısız bir araç olsaydı ...


Bu artık 2020'de çalışmaz, sayfa sonsuza kadar yüklenir. Ancak, nedense SSH komutu hala çalışıyor ...?
Aaron Franke

1

Windows 10'da Apache çalışıyor. Chrome'un Simon tarafından verilen en iyi yanıtta verilen sertifikaya güvenmesini sağlayamadım. Yaptığım şey PowerShell'i kullanarak kendinden imzalı bir sertifika oluşturmaktı.

Adım 1 - Kendinden İmzalı sertifika oluşturma

PowerShell
New-SelfSignedCertificate -DnsName "localhost" -CertStoreLocation "cert:\LocalMachine\My" 1'de

Adım 2 - Sertifikayı Yapılandırma ve Dışa Aktarma

Tip CertificateWindows arama çubuğuna tıklayın Manage Computer Certificatesönerilir kontrol paneli öğesi.

Gelen Sertifika Yönetimi programından (certlm), artık localhostaltında bir anahtar görmelisiniz Personal >> Certificates.

Bu sertifikayı kopyaladım Trusted Root Certification Authorities. Bunun gerekli olup olmadığından emin olmadığım konusunda dürüst olacağım.

Yeni kopyalanan sertifikayı seçerek, üzerine çift tıklayın (localhost sertifikası). Sertifika yönteminden önce Detailssekmeyi, ardından Copy to File...düğmesini tıklayın.

Bu getirecek ve Verme Sihirbazı, özel anahtarı vermeyi seçtim, ileri tıklayın. Ben de seçtim Export all extended properties(yine, bunun gerekli olup olmadığından emin değilim). Basit bir şifre ( pass) ve varsayılan şifreleme kullanmayı seçtim . Dışa aktarılacak klasörü seçin ve dosyayı adlandırın. Gerekirse dosyayı her zaman taşıyabilir ve yeniden adlandırabilirsiniz. Basit olması için, Apache kurulumunuz altındaki conf klasörünüze kopyalayalım (Benim durumumda C:\apache\conf:) ve dosyayı adlandırın myCert(ortaya çıkan dosya bir .pfxdosya olacaktır )

Adım 3 - .pfxApache ile kullanmak için dosyayı dönüştürün

Buradan temel olarak burada öğreticiyi takip ettim , ancak sitenin çökmesi durumunda talimatları (ayarlarımız için tweaked) ekleyeceğim.

Senin içinde İstemi Komut açın /apache/conf/klasör
: Aşağıdaki komutlar Run Not: Bu, şu anlama varsayar openssl.exeiçinde binapache kök klasöründe klasöründe (bu standart / varsayılan olmalıdır)

..\bin\openssl pkcs12 -in myCert.pfx -nocerts -out privateKey.pem

Bu sizden bir şifre isteyecektir, .pfxdosyayı dışa aktarırken 2. Adım için girdiğiniz bilgileri girin . Benim durumumda, bu pass. PEM ifadesi için aynı şifreyi girdim ve tekrar doğruladım. Bu, privateKey.pemconf klasörünüzde yeni bir dosya oluşturur .

O zaman koş

..\bin\openssl rsa -in privateKey.pem -out private.pem

Yine sizden bir şifre istenecektir ( Enter pass phrase for privateKey.pem:), belirlediğiniz şifreyi kullanın privateKey.pem. (Benim durumumda, pass)
yazan bir mesaj görmeniz gerekir writing RSA keyve adında yeni bir dosya private.pemsizin de conf/klasöründe. Bu SSLCertificateKeyFile dosyanız olacaktır.

Şimdi ilgili Sunucu Sertifikasını oluşturun. Çalıştırmak:

..\bin\openssl pkcs12 -in myCert.pfx -clcerts -nokeys -out EntrustCert.pem

Bu sizden bir şifre isteyecektir, .pfxdosyayı dışa aktarırken 2. Adım için girdiğiniz bilgileri girin . Bunu girin: Artık adlı bir dosya olacak EntrustCert.pemsenin içinde confklasöründe. Bu sizin SSLC sertifikanız

4. Adım - Yapılandırın httpd.conf

Sunucunuzun anahtarı ve sertifikası olarak oluşturulan yeni dosyaları kullanın. Belge kökünüzü dosyalarınızın bulunduğu yere değiştirdiğinizden emin olun!

ServerName localhost:80
Protocols h2 h2c http/1.1
<Directory />
    Options FollowSymLinks
    AllowOverride All
</Directory>

<VirtualHost _default_:443>
  ServerName localhost:443
  DocumentRoot ${SRVROOT}/htdocs/MYSITE
  SSLEngine on
  SSLCertificateFile "${SRVROOT}/conf/EntrustCert.pem"
  SSLCertificateKeyFile "${SRVROOT}/conf/private.pem"
</VirtualHost>

Ayrıca httpd.conf:

  • LoadModule ssl_module modules/mod_ssl.soUncommented olduğundan emin olun ( #önde yok )
  • uncomment LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
  • uncomment LoadModule http2_module modules/mod_http2.so
  • Uncomment Include conf/extra/httpd-ssl.conf (NOT: Dosyanın burada olduğundan emin olun!)

Ayrıca curl ve açık ssl kütüphaneleri dahil:

# load curl and open ssl libraries
LoadFile "C:\php\libeay32.dll"
LoadFile "C:\php\ssleay32.dll"
LoadFile "C:\php\libssh2.dll"

Bu modüller gerekli olmamalı, ancak bunları etkinleştirdiğimi not edeceğim:
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule filter_module modules/mod_filter.so
LoadModule deflate_module modules/mod_deflate.so

5. Adım - Yapılandırma httpd-ssl.conf

Gelen extra/klasör conf/klasöründe adlı bir dosya görmelisiniz httpd-ssl.conf.

5a. DeğiştirDocumentRoot - DocumentRootVarsayılanı, dosyalarınızın bulunduğu dizine değiştirin .

5b. DeğiştirServerName - ServerNameVarsayılandan (şuna benzer www.example.com:443)localhost:443

5c. DeğiştirSSLCertificateFile
Değiştir SSLCertificateFilevarsayılan ( ${SRVROOT}/conf/server.crtkadar)${SRVROOT}/conf/EntrustCert.pem

5c. DeğiştirSSLCertificateKeyFile
Değiştir SSLCertificateKeyFilevarsayılan ( ${SRVROOT}/conf/server.keykadar)${SRVROOT}/conf/private.pem

Hep birlikte, <VirtualHost _default_:443>etikette.

#   General setup for the virtual host
DocumentRoot "${SRVROOT}/htdocs/MYSITE"
ServerName localhost:443
ServerAdmin admin@example.com
ErrorLog "${SRVROOT}/logs/error.log"
TransferLog "${SRVROOT}/logs/access.log"

#   SSL Engine Switch:
#   Enable/Disable SSL for this virtual host.
SSLEngine on

#   Server Certificate:
#   Point SSLCertificateFile at a PEM encoded certificate.  If
#   the certificate is encrypted, then you will be prompted for a
#   pass phrase.  Note that a kill -HUP will prompt again.  Keep
#   in mind that if you have both an RSA and a DSA certificate you
#   can configure both in parallel (to also allow the use of DSA
#   ciphers, etc.)
#   Some ECC cipher suites (http://www.ietf.org/rfc/rfc4492.txt)
#   require an ECC certificate which can also be configured in
#   parallel.
SSLCertificateFile "${SRVROOT}/conf/EntrustCert.pem"
#SSLCertificateFile "${SRVROOT}/conf/server-dsa.crt"
#SSLCertificateFile "${SRVROOT}/conf/server-ecc.crt"

#   Server Private Key:
#   If the key is not combined with the certificate, use this
#   directive to point at the key file.  Keep in mind that if
#   you've both a RSA and a DSA private key you can configure
#   both in parallel (to also allow the use of DSA ciphers, etc.)
#   ECC keys, when in use, can also be configured in parallel
SSLCertificateKeyFile "${SRVROOT}/conf/private.pem"
#SSLCertificateKeyFile "${SRVROOT}/conf/server-dsa.key"
#SSLCertificateKeyFile "${SRVROOT}/conf/server-ecc.key"

Apache'yi yeniden başlat

Bu değişiklikleri yaptıktan sonra , bir güvenlik uyarısı ve küçük bir asma kilit olmadan Apache'yi yeniden başlatabilir ve https: // localhost'a gidebilirsiniz !

Güvenli yerel ana bilgisayar

Umarım bu birine yardımcı olur! 😊

Kaynaklar:
1.) Auri Rahimzadeh'in kendinden imzalı bir sertifika oluşturma konusundaki cevabı
2.) Entrust Datacard - Bir .pfx'i Apache sunucusuyla kullanmak için nasıl dönüştürebilirim?


0

Başka bir basit yöntem Ubuntu'da Python Sunucusu kullanmaktır.

  1. Terminalde aşağıdaki komutla server.xml oluşturun:

    openssl req -new -x509 -keyout server.pem -out server.pem -days 365 -nodes

    Not: Bilgisayarınızda openssl kurulu olduğu varsayılarak .

  2. Adlı bir dosyada kodunun altına kaydet simple-https-server.pyiçinde herhangi sunucuyu çalıştırmak istediğiniz dizine.

    import BaseHTTPServer, SimpleHTTPServer
    import ssl
    
    httpd = BaseHTTPServer.HTTPServer(('localhost', 4443), SimpleHTTPServer.SimpleHTTPRequestHandler)
    httpd.socket = ssl.wrap_socket (httpd.socket, certfile='./server.pem', server_side=True)
    httpd.serve_forever()
    
  3. Sunucuyu terminalden çalıştırın:

    python simple-https-server.py

  4. Sayfayı şu adreste ziyaret edin:

    https://localhost:4443

İlave notlar :

  1. Dosyadaki bağlantı noktasınısimple-https-server.py satır içinde değiştirebilirsiniz

    httpd = BaseHTTPServer.HTTPServer(('localhost', 4443), SimpleHTTPServer.SimpleHTTPRequestHandler)

  2. Şunları yapabilirsiniz değiştirmek localhostiçin IP aynı çizginin üstünde yer:

    httpd = BaseHTTPServer.HTTPServer(('10.7.1.3', 4443), SimpleHTTPServer.SimpleHTTPRequestHandler)

    ağınıza bağlı herhangi bir cihazdan sayfaya erişin. Bu, "HTML5 GeoLocation API'sını bir mobil cihazda test etmeniz gerekir ve Chrome, API'yı yalnızca güvenli bağlantılarda kısıtlar" gibi durumlarda çok kullanışlıdır.

Gist: https://gist.github.com/dergachev/7028596

http://www.piware.de/2011/01/creating-an-https-server-in-python/


0

MacOS kullananlar için bu , yerel web geliştirici ortamınızı kurmak için https://getgrav.org/blog/macos-sierra-apache-multiple-php-versions için harika bir rehberdir . Üçüncü bölümünde https://getgrav.org/blog/macos-sierra-apache-ssl Andy Miller, kendinden imzalı bir sertifika ile apache'nin nasıl kurulacağını açıklıyor:

Bu tuş komutudur:

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout server.key -out server.crt

Ama takip etmeniz gereken birkaç adım var, bu yüzden bunu kontrol edin ve iyi şanslar! ;)


0

@CodeWarrior'un Chrome'da mükemmel çalışan çok iyi cevabına bir şeyler eklemek istiyorum, ancak Firefox için ek bir adım gerekiyor.

Firefox, Windows'un varsayılan olarak yaptığı CA Sertifikalarını itmediğinden, devam etmeniz about:config, aşağı kaydırmanız security.enterprise_roots.enabled ve true olarak değiştirmeniz gerekir.

Artık sertifikanız Firefox'ta da geçerli olarak görülmelidir.

Elbette bu sadece geliştirme amaçlıdır, çünkü ssl güveni kritik bir güvenlik sorunudur ve bu ayarları yalnızca sonuçları biliyorsanız, değiştirin.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.