Kuidas seadistada Apache httpd ssl (https) kasutamiseks ostukärude, maksejuhtmete või muude turvaliste süsteemidega

See käsiraamat selgitab, kuidas seadistada Apache httpd ssl (https) kasutamiseks ostukärude, maksejuhtmete või muu pealkiri=”View all articles about secure here”>secure systems.Märkus: Alates Apacheist on lisatud httpd 2.2.12 SNI (Server Name Nimi), mis võimaldab teil käivitada mitut https-tüüpi nimega baseeruvaid virtuaalhoste, samas kui varem oli võimalik käitada ainult ühte SSL-hosti süsteemi kohta. OpenSSL 0.9.8f on ka teine ​​oluline nõue. Käesoleva dokumendi kirjutamisest on see võimalik ainult Centos 6.x, mitte 5.x, kuna OpenSSL-i nõue pole täidetud.

Nõuete täieliku kirjelduse leiate aadressilt: http://wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI

Kohaldatakse Centos versioonidele:

  • Centos 5.x
  • Centos 6.x

Nõuded

Nõuete selgitus.

  1. Juurdepääs või asjakohased sudo privileegid süsteemis.
  2. Registreeritud domeen ja juurdepääs dns / hosting seadetele.
  3. Hästi konfigureeritud ja toimiv httpd seadistamine.
  4. EPEL Repo sisse lülitatud

Töö tegemine

Põhjalik kirjeldus, mida tehakse ja mida oodatakse.

    1. Installige httpd ja openssl ning genereerige oma uue ssl-sertifikaadi võtmefail. Kuigi võite genereerida krüpteerimata võtme, on siin turvameetmed, seega genereerime krüptitud võtme. Mõlemad pealkiri=”View all articles about private key here”>private key and the certificate are required to enable SSL:
    yum installi httpd openssl openssl genrsa -des3 -lt www.example.com.key 2048
    
    
    
    (Kindlasti hoidke oma parool turvalises kohas, mitte serveris. Seda peate iga kord, kui käivitate / taaskäivitate apache.)
      1. Loo oma CSR-ile (sertifikaadi allkirjastamise taotlus) SSL-sertifikaat asutus:
      openssl req-uus -key www.example.com.key -out www.example.com.csr
      
      See käsk viitab järgmistele sertifikaadi X.509 atribuutidele:
      
      Riik nimi: Kasutage kahekohalist koodi ilma riigi kirjavahemärgita, näiteks: USA või CA.
      Osariik või maakond: Täpsustage riik täielikult; ärge lühendage riigi või provintsi nime, näiteks: California
      
      Piirkond või linn: Kohalik väli on linna või linna nimi, näiteks: Berkeley. Ärge lühendage. Näiteks: Saint Louis, mitte St. Louis
      
      Ettevõte: Kui teie ettevõttel või osakonnal on nimega &, @ või mõni muu sümbol, kasutades oma nimega shift-klahvi, peate sümbolit täpsustama või jätma selle registreerumiseks. Näide: XY & Z korporatsiooniks oleks XYZ Corporation või XY ja Z Corporation.
      
      Organisatsiooniline üksus: See väli on vabatahtlik; kuid neid saab identifitseerimise hõlbustamiseks kasutada tunnistused organisatsioonile registreeritud. Organisatsiooniline üksus (OU) on taotluse esitanud osakonna või organisatsiooni üksus. OU väljajätmiseks vajutage klaviatuuril Enter.
      
      Üldnimetus: Üldnimi on host + domeeninimi. See näeb välja nagu www.company.com või company.com. Sertifikaate saab kasutada ainult veebiserverites, kasutades registreerimisel määratud üldnimetust. Näiteks domeeni "domain.com" sertifikaat saab hoiatuse saidi nimega "www.domain.com" või "kindlustama.domain.com ", kuna" www.domain.com "ja" secure.domain.com "erinevad" domain.com "-st.
      
      CSR-i genereerimisel ärge sisestage oma e-posti aadressi, väljakutse parooli või valikulist ettevõtte nime. Avalik /privaatvõti paar on nüüd loodud. Privaatvõtme (www.domain.com.key) salvestatakse serveri masinas kohapeal ja seda kasutatakse dekrüpteerimiseks. Avalik portsjon kujul allkirja taotluse (certrequest.csr), on sertifikaadi registreerumise hetkel asutus oma valik. Andmete kopeerimiseks ja kleepimiseks registreerumisvormist avage fail tekstitöötluses, näiteks Notepad või Vi ja salvestage see .txt-failina. Ära kasuta Microsoft Word kuna see võib lisada täiendavaid peidetud märke, mis muudavad CSR-i sisu.
      
      Pärast CSR-i loomist jätkake oma sertifitseerimisasutusega ja ostke uus sertifikaat.
        1. Paigalda ja seadistada mod_ssl:
        yum install mod_ssl
        
        vi /etc/httpd/conf.d/ssl.conf
        
        Liigutage oma võtme- ja CRT-failid järgmiselt:
        /etc/httpd/conf/ssl.crt/www.example.com.crt /etc/httpd/conf/ssl.key/www.example.com.key
        
        Konfiguratsioonifail:
        # # See on Apache'i serveri konfiguratsioonifail, mis pakub SSL-toe. # See sisaldab konfigureerimisdirekte, mis juhivad serverit, kuidas https-ühenduse kaudu lehti teenindada. Nende # direktiivide kohta teabe saamiseks vaadake <URL: http: // httpd.apache.org / docs-2.0 / mod / mod_ssl.html> # # ÄRGE lihtsalt loe juhiseid siin ilma mõistmise #, mida nad teevad. Nad on siin vaid näpunäited või meeldetuletused. Kui te pole kindel, konsulteerige veebidokumentidega. Sind on hoiatatud. # LoadModule ssl_module modules / mod_ssl.so # Kuni dokumendid on lõpule viidud, kontrollige täiendavate konfiguratsiooninäitude ja moodulite dokumenteerimisega aadressi http://www.modssl.org/ #. Directives # ja mod_ssl omadused on suures osas muutumatud Apache 1.3 mod_ssl projekti # -ga. # # Kui me pakume ka SSL-i, peame kuulama # standardse HTTP-porti (vt eespool) ja HTTPS-porti # Kuulata 443 ## ## SSL-i globaalset konteksti ## ## Selles kontekstis kasutatakse kogu SSL-i konfiguratsiooni nii # # põhiserver ja kõik SSL-toega versioonid virtuaalsed hostid. ## # # Mõned MIME-tüübid sertifikaatide ja CRLide allalaadimiseks # AddType-rakendus / x-x509-ca-cert .crt AddType-rakendus / x-pkcs7-crl .crl # Pass Phrase Dialog: # Paroolifraasi kogumise protsessi seadistamine. # Filtreerimisdialoogi programm (`builtin 'on sisemine # terminali dialoog) peab esitama stdoutil paroolifraasi. SSLPassPhraseDialog sisestatakse # Inter-Process seansi vahemälu: # SSL-seansi vahemiku seadistamine: kõigepealt saab mehhanismi # kasutada ja lõpetada aegumistähtaeg (sekundites). #SSLSessionCache puudub #SSLSessionCache dbm: / var / cache / mod_ssl / scache (512000) #SSLSessionCache dc: UNIX: / var / cache / mod_ssl / distcache SSLSessionCache shmcb: / var / cache / mod_ssl / scache (512000) SSLSessionCacheTimeout 300 # Semaphor : # Seadistades vastastikuse tõrjutuse semafori tee, kasutab # SSL mootor sisemiselt protsessidevahelise sünkroniseerimise jaoks. SSLMutex vaikimisi # Pseudo juhusliku arvu generaator (PRNG): # Seadista üks või mitu allikat # SSL-i teegi PRNG genereerimiseks. Seemneandmed peaksid olema hea juhusliku kvaliteediga. # HOIATUS! Mõne platvormi / dev / juhuslike plokkide puhul, kui pole piisavalt piisavalt entroopiat # on saadaval. See tähendab, et siis ei saa te kasutada / dev / juhuslikku seadet #, kuna see tooks kaasa väga pikkade ühenduste ajad (kui # on vaja rohkem entroopiaid saada). Kuid tavaliselt sisaldavad need # platvormid lisaks / dev / urandom seadet, mis ei ole # blokeeritud. Kui see on olemas, kasutage selle asemel seda. Lisateabe saamiseks lugege mod_ssl User # Manual. SSLRandomSeed käivitusfail: / dev / urandom 256 SSLRandomSeed ühendab sisseehitatud #SSLRandomSeed käivitamisfaili: / dev / juhuslik 512 #SSLRandomSeed faili fail: / dev / juhuslik 512 #SSLRandomSeed faili ühendus: / dev / urandom 512 # # Kasutage "SSLCryptoDevice" mis tahes toetatud riistvara # kiirendid. Kasutage "openssl engine -v", et kuvada toetatud # mootorit nimed. MÄRKUS. Kui aktiveerite kiirendi ja # server ei käivitu, vaadake vealehti ja veenduge, et teie gaasipedaal toimib korralikult. # SSLCryptoDevice sisseehitatud #SSLCryptoDevice ubsec ## ## SSLi virtuaalse hosti kontekst
        <VirtualHost *: 443>
        # Üldist seadistust virtuaalsele hostile, päritud globaalsest konfiguratsioonist
        DocumentRoot "/var/www/html/example.com/" Serverinimi www.example.com
        # Use separate log files for the SSL virtual host; note that LogLevel
        # is not inherited from httpd.conf.
        ErrorLog logs/ssl_error_log
        TransferLog logs/ssl_access_log
        LogLevel warn
        #   SSL Engine Switch:
        #   Enable/Disable SSL for this virtual host.
        SSLEngine on
        #   SSL Cipher Suite:
        #   List the ciphers that the client is permitted to negotiate.
        #   See the mod_ssl documentation for a complete list.
        SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP
        #   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. A test
        #   certificate can be generated with `make certificate' under
        #   built time. Keep in mind that if you've both a RSA and a DSA
        #   certificate you can seadistada both in parallel (to also allow
        #   the use of DSA ciphers, etc.)
        SSLCertificateFile /etc/httpd/conf/ssl.crt/www.example.com.crt
        #SSLCertificateFile /etc/httpd/conf/ssl.crt/server.crt
        #SSLCertificateFile /etc/httpd/conf/ssl.crt/server-dsa.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.)
        SSLCertificateKeyFile /etc/httpd/conf/ssl.key/www.example.com.key
        #SSLCertificateKeyFile /etc/httpd/conf/ssl.key/server.key
        #SSLCertificateKeyFile /etc/httpd/conf/ssl.key/server-dsa.key
        #   Server Certificate Chain:
        #   Point SSLCertificateChainFile at a file containing the
        #   concatenation of PEM encoded CA tunnistused which form the
        #   certificate chain for the server certificate. Alternatively
        #   the referenced file can be the same as SSLCertificateFile
        #   when the CA certificates are directly appended to the server
        #   certificate for convinience.
        #SSLCertificateChainFile /etc/httpd/conf/ssl.crt/ca.crt
        #   Certificate Authority (CA):
        #   Set the CA certificate verification path where to find CA
        #   certificates for client autentimine or alternatively one
        #   huge file containing all of them (file must be PEM encoded)
        #   Note: Inside SSLCACertificatePath you need hash symlinks
        #         to point to the certificate files. Use the provided
        #         Makefile to update the hash symlinks after changes.
        #SSLCACertificatePath /etc/httpd/conf/ssl.crt
        #SSLCACertificateFile /usr/share/ssl/certs/ca-bundle.crt
        #   Certificate Revocation Lists (CRL):
        #   Set the CA revocation path where to find CA CRLs for client
        #   autentimine or alternatively one huge file containing all
        #   of them (file must be PEM encoded)
        #   Note: Inside SSLCARevocationPath you need hash symlinks
        #         to point to the certificate files. Use the provided
        #         Makefile to update the hash symlinks after changes.
        #SSLCARevocationPath /etc/httpd/conf/ssl.crl
        #SSLCARevocationFile /etc/httpd/conf/ssl.crl/ca-bundle.crl
        #   Client Authentication (Type):
        #   Client certificate verification type and depth.  Types are
        #   none, optional, require and optional_no_ca.  Depth is a
        #   number which specifies how deeply to verify the certificate
        #   issuer chain before deciding the certificate is not valid.
        #SSLVerifyClient require
        #SSLVerifyDepth  10
        #   Access Control:
        #   With SSLRequire you can do per-directory access control based
        #   on arbitrary complex boolean expressions containing server
        #   variable checks and other lookup directives.  The syntax is a
        #   mixture between C and Perl.  See the mod_ssl documentation
        #   for more details.
        #<Location />
        #SSLRequire (    %{SSL_CIPHER} !~ m/^(EXP|NULL)/ \
        #            and %{SSL_CLIENT_S_DN_O} eq "Snake Oil, Ltd." \
        #            and %{SSL_CLIENT_S_DN_OU} in {"Staff", "CA", "Dev"} \
        #            and %{TIME_WDAY} >= 1 and %{TIME_WDAY} <= 5 \
        #            and %{TIME_HOUR} >= 8 and %{TIME_HOUR} <= 20       ) \
        #           or %{REMOTE_ADDR} =~ m/^192\.76\.162\.[0-9]+$/
        #</Location>
        #   SSL Engine Options:
        #   Set various options for the SSL engine.
        #   o FakeBasicAuth:
        #     Translate the client X.509 into a Basic Authorisation.  This means that
        #     the standard Auth/DBMAuth methods can be used for access control.  The
        #     user name is the `one line' version of the client's X.509 certificate.
        #     Note that no password is obtained from the user. Every entry in the user
        #     file needs this password: `xxj31ZMTZzkVA'.
        #   o ExportCertData:
        #     This exports two additional environment variables: SSL_CLIENT_CERT and
        #     SSL_SERVER_CERT. These contain the PEM-encoded certificates of the
        #     server (always existing) and the client (only existing when client
        #     authentication is used). This can be used to import the certificates
        #     into CGI scripts.
        #   o StdEnvVars:
        #     This exports the standard SSL/TLS related `SSL_*' environment variables.
        #     Per default this exportation is switched off for performance reasons,
        #     because the extraction step is an expensive operation and is usually
        #     useless for serving static content. So one usually enables the
        #     exportation for CGI and SSI Taotlusi only.
        #   o StrictRequire:
        #     This denies access when "SSLRequireSSL" or "SSLRequire" applied even
        #     under a "Satisfy any" situation, i.e. when it applies access is denied
        #     and no other module can change it.
        #   o OptRenegotiate:
        #     This enables optimized SSL connection renegotiation handling when SSL
        #     directives are used in per-directory context.
        #SSLOptions +FakeBasicAuth +ExportCertData +CompatEnvVars +StrictRequire
        <Files ~ "\.(cgi|shtml|phtml|php3?)$">
            SSLOptions +StdEnvVars
        </Files>
        <Directory "/var/www/cgi-bin">
            SSLOptions +StdEnvVars
        </Directory>
        #   SSL Protocol Adjustments:
        #   The safe and default but still SSL/TLS standard compliant shutdown
        #   approach is that mod_ssl sends the close notify alert but doesn't wait for
        #   the close notify alert from client. When you need a different shutdown
        #   approach you can use one of the following variables:
        #   o ssl-unclean-shutdown:
        #     This forces an unclean shutdown when the connection is closed, i.e. no
        #     SSL close notify alert is send or allowed to received.  This violates
        #     the SSL/TLS standard but is needed for some brain-dead browsers. Use
        #     this when you receive I/O errors because of the standard approach where
        #     mod_ssl sends the close notify alert.
        #   o ssl-accurate-shutdown:
        #     This forces an accurate shutdown when the connection is closed, i.e. a
        #     SSL close notify alert is send and mod_ssl waits for the close notify
        #     alert of the client. This is 100% SSL/TLS standard compliant, but in
        #     practice often causes hanging connections with brain-dead browsers. Use
        #     this only for browsers where you know that their SSL implementation
        #     works correctly.
        #   Notice: Most problems of broken clients are also related to the HTTP
        #   keep-alive facility, so you usually additionally want to disable
        #   keep-alive for those clients, too. Use variable "nokeepalive" for this.
        #   Similarly, one has to force some clients to use HTTP/1.0 to workaround
        #   their broken HTTP/1.1 implementation. Use variables "downgrade-1.0" and
        #   "force-response-1.0" for this.
        SetEnvIf User-Agent ".*MSIE.*" \
                nokeepalive ssl-unclean-shutdown \
                 downgrade-1.0 force-response-1.0
        #   Per-Server Logging:
        #   The home of a custom SSL logifail. Use this when you want a
        #   compact non-error SSL logfile on a virtual host basis.
        CustomLog logs/ssl_request_log \
                  "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
        </VirtualHost>
        
          1. Restart httpd using the passphrase:
          teenus httpd restart (or start if it hasn't been started)
          
          service httpd restart
          Stopping httpd:                                            [  OK  ]
          Starting httpd:
          Apache/2.2.8 mod_ssl/2.2.8 (Pass Phrase Dialog)
          Some of your private key files are encrypted for security reasons.
          In order to read them you have to provide the pass phrases.
          
          Server www.example.com:443 (RSA)
          Enter pass phrase:
          
          OK: Pass Phrase Dialog successful.
                                                                     [  OK  ]
          

          Troubleshooting / How To Test

          Explanation troubleshooting basics and expectations.

            1. Test your new SSL connection:
            Külasta: https://www.example.com
              1. Make sure httpd is started and that port 443 is open. Also, make sure you have configured httpd correctly apart from the SSL configuration:
              service httpd status; service iptables status

              Jäta vastus

              Sellel saidil kasutatakse rämpsposti vähendamiseks Akismetit. Vaadake, kuidas teie andmeid töödeldakse.