9 joulukuun, 2021

miten luoda itse allekirjoitettu SSL-sertifikaatti Apachelle Ubuntu 16.04: ssä

Johdanto

TLS, tai transport layer security, ja sen edeltäjä SSL, joka tulee sanoista secure sockets layer, ovat web-protokollia, joita käytetään käärimään normaalia liikennettä suojattuun, salattuun kääreeseen.

tällä tekniikalla palvelimet voivat lähettää liikennettä turvallisesti palvelimen ja asiakkaiden välillä ilman mahdollisuutta, että ulkopuoliset tahot sieppaavat viestit. Varmennejärjestelmä auttaa myös käyttäjiä todentamaan niiden sivustojen henkilöllisyyden, joihin he ovat yhteydessä.

tässä oppaassa näytämme, miten itse allekirjoitettu SSL-varmenne määritetään käytettäväksi Apache-www-palvelimen kanssa Ubuntu 16.04-palvelimella.

Huomautus: itse allekirjoitettu varmenne salaa palvelimen ja asiakkaiden välisen viestinnän. Koska mikään verkkoselaimiin sisältyvistä luotettavista varmenneviranomaisista ei kuitenkaan ole allekirjoittanut sitä, käyttäjät eivät voi käyttää varmennetta vahvistaakseen palvelimesi henkilöllisyyden automaattisesti.

itse allekirjoitettu varmenne voi olla sopiva, jos palvelimeen ei ole liitetty verkkotunnusta ja jos salattu web-käyttöliittymä ei ole käyttäjän käytössä. Jos sinulla on verkkotunnus, monissa tapauksissa on parempi käyttää CA-allekirjoitettua varmennetta. Let ’ s Encrypt Projectin avulla voit selvittää, miten luot ilmaisen luotetun varmenteen täällä.

Edeltävät opinnot

ennen kuin aloitat, sinulla tulee olla muu kuin pääkäyttäjä, jolla on sudo oikeudet. Voit oppia tällaisen käyttäjätilin perustamiseen noudattamalla Ubuntu 16.04: n alkuperäistä palvelinasetusta.

tarvitset myös Apache-verkkopalvelimen asennettavaksi. Jos haluat asentaa kokonaisen lampun (Linux, Apache, MySQL, PHP) pinon palvelimellesi, voit seurata oppaamme lampun perustamisesta Ubuntu 16.04: ssä. Jos haluat vain Apache web server, ohita vaiheet liittyvät PHP ja MySQL oppaassa.

kun olet suorittanut edellytykset, jatka alla.

Vaihe 1: Luo SSL-varmenne

TLS / SSL toimii käyttämällä julkisen varmenteen ja yksityisen avaimen yhdistelmää. SSL-avain pidetään salaisena palvelimella. Sitä käytetään asiakkaille lähetetyn sisällön salaamiseen. SSL-varmenne jaetaan julkisesti kaikille sisältöä pyytäville. Sitä voidaan käyttää siihen liittyvän SSL-avaimen allekirjoittaman sisällön purkamiseen.

voimme luoda itse allekirjoitetun avain-ja varmenneparin OpenSSL: n kanssa yhdellä komennolla:

  • sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/ssl/certs/apache-selfsigned.crt

sinulle esitetään sarja kysymyksiä. Ennen kuin menemme sen yli, katsotaanpa, mitä tapahtuu komennossa, jonka annamme:

  • openssl: tämä on perus komentorivityökalu OpenSSL-varmenteiden, avainten ja muiden tiedostojen luomiseen ja hallintaan.
  • req: tämä alakomennus määrittää, että haluamme käyttää X. 509 certificate signing request (CSR) – hallintaa. ”X. 509” on julkisen avaimen infrastruktuuristandardi, jota SSL ja TLS noudattavat avaimiensa ja varmenteidensa hallinnassa. Haluamme luoda uuden X. 509 CERTin, joten käytämme tätä alikomentoa.
  • – x509: Tämä muokkaa edellistä alakomennusta kertomalla apuohjelmalle, että haluamme tehdä itse allekirjoitetun varmenteen sen sijaan, että generoisimme varmenteen allekirjoituspyynnön, kuten normaalisti tapahtuisi.
  • – solmut: tämä kertoo OpenSSL: lle, että se ohittaa varmenteemme salauslauseella. Apachen pitää pystyä lukemaan tiedosto ilman käyttäjän väliintuloa, kun palvelin käynnistyy. Salauslause estäisi tätä tapahtumasta, koska meidän pitäisi syöttää se jokaisen uudelleenkäynnistyksen jälkeen.
  • – days 365: Tämä asetus määrittää ajan, jonka varmenne katsotaan päteväksi. Varasimme sen vuodeksi tänne.
  • -newkey rsa:2048: tämä määrittää, että haluamme luoda uuden varmenteen ja uuden avaimen samanaikaisesti. Emme luoneet avainta, joka vaaditaan varmenteen allekirjoittamiseen edellisessä vaiheessa, joten se on luotava varmenteen mukana. rsa:2048 osa kertoo sen tekevän RSA-avaimen, joka on 2048 bittiä pitkä.
  • -keyout: tämä rivi kertoo OpenSSL: lle, mihin luomamme yksityinen avaintiedosto sijoitetaan.
  • – ulos: Tämä kertoo OpenSSL: lle, minne luomamme sertifikaatin voi sijoittaa.

kuten edellä todettiin, nämä valinnat luovat sekä avaintiedoston että varmenteen. Meiltä kysytään muutamia kysymyksiä palvelimestamme, jotta voimme upottaa tiedot oikein varmenteeseen.

täytä kehotteet asianmukaisesti. Tärkein linja on se, joka pyytää Common Name (e.g. server FQDN or YOUR name). Sinun on syötettävä palvelimeen liittyvä toimialueen nimi tai todennäköisemmin palvelimesi julkinen IP-osoite.

kaikki kehotteet näyttävät jokseenkin tältä:

Output
Country Name (2 letter code) :USState or Province Name (full name) :New YorkLocality Name (eg, city) :New York CityOrganization Name (eg, company) :Bouncy Castles, Inc.Organizational Unit Name (eg, section) :Ministry of Water SlidesCommon Name (e.g. server FQDN or YOUR name) :server_IP_addressEmail Address :admin@your_domain.com

molemmat luomasi tiedostot sijoitetaan /etc/ssl – kansion asianmukaisiin alikansioihin.

kun käytämme OpenSSL: ää, meidän tulisi myös luoda vahva Diffie-Hellman-konserni, jota käytetään neuvottelemaan asiakkaiden kanssa täydellisestä eteenpäin salassapidosta.

voimme tehdä tämän kirjoittamalla:

  • sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

tämä voi kestää muutaman minuutin, mutta kun se on valmis, sinulla on vahva DH-ryhmä /etc/ssl/certs/dhparam.pem, jota voimme käyttää kokoonpanossamme.

Vaihe 2: Määritä Apache käyttämään SSL: ää

olemme luoneet avain-ja varmennetiedostomme /etc/ssl – hakemiston alle. Nyt meidän täytyy vain muokata apassien kokoonpanoa hyödyntämään näitä.

teemme muutamia muutoksia kokoonpanoomme:

  1. luomme asetuspätkän, joka määrittää vahvat SSL-oletusasetukset.
  2. muokkaamme mukana tulevaa SSL Apache Virtual Host-tiedostoa osoittaaksemme luomamme SSL-varmenteet.
  3. (suositus) muokkaamme salaamatonta Virtual Host-tiedostoa ohjataksemme pyynnöt automaattisesti salattuun virtuaaliseen isäntään.

kun olemme valmiita, meillä pitäisi olla suojattu SSL-kokoonpano.

luo Apache Configuration-pätkä vahvoilla Salausasetuksilla

ensin luomme Apache configuration-pätkän MÄÄRITELLÄKSEMME joitakin SSL-asetuksia. Tämä asettaa Apachen vahvaan SSL-salakirjoitusohjelmaan ja mahdollistaa joitakin lisäominaisuuksia, jotka auttavat pitämään palvelimemme turvallisena. Asettamiamme parametreja voivat käyttää kaikki SSL: n mahdollistavat virtuaaliset isännät.

Luo uusi pätkä /etc/apache2/conf-available – hakemistoon. Nimeämme tiedoston ssl-params.conf tehdäksemme sen tarkoituksen selväksi:

  • sudo nano /etc/apache2/conf-available/ssl-params.conf

Apache SSL: n perustamiseksi turvallisesti käytämme Remy van Elstin suosituksia Cipherli.st sivusto. Tämä sivusto on suunniteltu tarjoamaan helposti kulutettavia salausasetuksia suosituille ohjelmistoille. Voit lukea lisää hänen päätöksistään koskien Apassivalintoja täältä.

ylläolevan sivuston ehdotetut asetukset tarjoavat vahvan tietoturvan. Joskus tämä tulee kalliimmaksi asiakkaan yhteensopivuudesta. Jos haluat tukea vanhempia asiakkaita, on olemassa vaihtoehtoinen lista, johon pääsee klikkaamalla linkkiä sivulla merkitty ”Kyllä, anna minulle ciphersuite, joka toimii legacy / old software.”Tämä lista voidaan korvata alla kopioiduilla kappaleilla.

käyttämäsi asetustyypin valinta riippuu paljolti siitä, mitä tarvitset tukeaksesi. Molemmat tarjoavat suuren turvallisuuden.

voimme kopioida annetut asetukset kokonaisuudessaan. Teemme vain kaksi pientä muutosta.

Aseta SSLOpenSSLConfCmd DHParameters direktiivi osoittamaan aiemmin luomaamme Diffie-Hellman-tiedostoa. Myös, kestää hetken lukea HTTP tiukka Liikenneturva, tai HSTS, ja erityisesti noin ”esikuormitus” toiminnallisuus. HSTS: n esilataus lisää turvallisuutta, mutta sillä voi olla kauaskantoisia seurauksia, jos se on vahingossa otettu käyttöön tai otettu väärin käyttöön. Tässä oppaassa asetuksia ei esitetä, mutta voit muokata sitä, jos olet varma, että ymmärrät seuraukset:

/etc/apache2/conf-available/ssl-params.conf
# from https://cipherli.st/# and https://raymii.org/s/tutorials/Strong_SSL_Security_On_Apache2.htmlSSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDHSSLProtocol All -SSLv2 -SSLv3SSLHonorCipherOrder On# Disable preloading HSTS for now. You can use the commented out header line that includes# the "preload" directive if you understand the implications.#Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains"Header always set X-Frame-Options DENYHeader always set X-Content-Type-Options nosniff# Requires Apache >= 2.4SSLCompression off SSLSessionTickets OffSSLUseStapling on SSLStaplingCache "shmcb:logs/stapling-cache(150000)"SSLOpenSSLConfCmd DHParameters "/etc/ssl/certs/dhparam.pem"

Tallenna ja sulje tiedosto, kun olet valmis.

muokkaa oletus Apache SSL Virtual Host-tiedostoa

seuraavaksi muokataan /etc/apache2/sites-available/default-ssl.conf, oletus Apache SSL Virtual Host-tiedostoa. Jos käytät eri palvelinlohkotiedostoa, korvaa sen nimi alla olevissa komennoissa.

ennen kuin jatkamme, varmuuskopioidaan alkuperäinen SSL Virtual Host-tiedosto:

  • sudo cp /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-available/default-ssl.conf.bak

nyt, avaa SSL Virtual Host-tiedosto tehdä muutoksia:

  • sudo nano /etc/apache2/sites-available/default-ssl.conf

sisällä, kun suurin osa kommenteista on poistettu, virtuaalisen isäntätiedoston pitäisi näyttää oletuksena tältä:

/etc/apache2 / sites-available / default-ssl.conf
<IfModule mod_ssl.c> <VirtualHost _default_:443> ServerAdmin webmaster@localhost DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined SSLEngine on SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key <FilesMatch "\.(cgi|shtml|phtml|php)$"> SSLOptions +StdEnvVars </FilesMatch> <Directory /usr/lib/cgi-bin> SSLOptions +StdEnvVars </Directory> # BrowserMatch "MSIE " \ # nokeepalive ssl-unclean-shutdown \ # downgrade-1.0 force-response-1.0 </VirtualHost></IfModule>

teemme pieniä muutoksia tiedostoon. Asetamme normaalit asiat, joita haluamme säätää virtuaalisessa Isäntätiedostossa (ServerAdmin sähköpostiosoite, ServerName jne.), säädä SSL-direktiivit osoittamaan sertifikaattimme ja avaintiedostomme, ja poista yksi osio, joka tarjoaa yhteensopivuuden vanhemmille selaimille.

näiden muutosten jälkeen palvelinlohkosi tulisi näyttää samanlaiselta kuin tämä:

/etc/apache2 / sites-available / default-ssl.conf
<IfModule mod_ssl.c> <VirtualHost _default_:443> ServerAdmin [email protected] ServerName server_domain_or_IP DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined SSLEngine on SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key <FilesMatch "\.(cgi|shtml|phtml|php)$"> SSLOptions +StdEnvVars </FilesMatch> <Directory /usr/lib/cgi-bin> SSLOptions +StdEnvVars </Directory> BrowserMatch "MSIE " \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 </VirtualHost></IfModule>

Tallenna ja sulje tiedosto, kun olet valmis.

(suositus) muokkaa salaamatonta virtuaalista isäntätiedostoa UUDELLEENOHJATAKSESI HTTPS

nykyisellään palvelin tarjoaa sekä salaamatonta HTTP-että salattua HTTPS-liikennettä. Paremman turvallisuuden vuoksi on suositeltavaa useimmissa tapauksissa ohjata HTTP HTTPS automaattisesti. Jos et halua tai tarvitse tätä toimintoa, voit turvallisesti ohittaa tämän osion.

jos haluat säätää salaamattoman virtuaalisen isäntätiedoston ohjaamaan kaiken liikenteen SSL-salatuksi, voimme avata /etc/apache2/sites-available/000-default.conf – tiedoston:

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

VirtualHost kokoonpanolohkojen sisälle tarvitsee vain lisätä Redirect direktiivi, joka osoittaa kaiken liikenteen sivuston SSL-versioon:

/etc/apache2/sites-available/000-default.conf
<VirtualHost *:80> . . . Redirect "/" "https://your_domain_or_IP/" . . .</VirtualHost>

Tallenna ja sulje tiedosto, kun olet valmis.

Vaihe 3: Säädä palomuuri

jos sinulla on ufw palomuuri käytössä, kuten Prevention guides suosittelee, saatat joutua säätämään asetuksia SSL-liikenteen sallimiseksi. Onneksi Apache rekisteröi asennuksen yhteydessä muutaman Profiilin, joilla on ufw.

voimme nähdä käytettävissä olevat profiilit kirjoittamalla:

  • sudo ufw app list

näkisitpä tällaisen listan.:

Output
Available applications: Apache Apache Full Apache Secure OpenSSH

näet nykyisen asetuksen kirjoittamalla:

  • sudo ufw status

jos sallit vain säännöllisen HTTP-liikenteen aiemmin, ulostulosi saattaa näyttää tältä:

Output
Status: activeTo Action From-- ------ ----OpenSSH ALLOW AnywhereApache ALLOW AnywhereOpenSSH (v6) ALLOW Anywhere (v6)Apache (v6) ALLOW Anywhere (v6)

lisäksi antaa HTTPS liikennettä, voimme sallia ”Apache täysi” profiili ja sitten poistaa tarpeeton ”Apache” profiili avustus:

  • sudo ufw allow 'Apache Full'
  • sudo ufw delete allow 'Apache'

statuksesi pitäisi näyttää tältä nyt:

  • sudo ufw status
Output
Status: activeTo Action From-- ------ ----OpenSSH ALLOW AnywhereApache Full ALLOW AnywhereOpenSSH (v6) ALLOW Anywhere (v6)Apache Full (v6) ALLOW Anywhere (v6)

Vaihe 4: Ota muutokset Apache

nyt kun olemme tehneet muutokset ja säätäneet palomuuriamme, voimme ottaa Apachen SSL-ja headers-moduulit käyttöön, ottaa käyttöön SSL-ready Virtual Hostin ja käynnistää Apachen uudelleen.

voimme ottaa käyttöön mod_ssl, Apache SSL-moduulin, ja mod_headers, jota tarvitaan joissakin SSL-pätkän asetuksissa, a2enmod – komennolla:

  • sudo a2enmod ssl
  • sudo a2enmod headers

seuraavaksi voimme ottaa SSL Virtual Hostin käyttöön a2ensite – komennolla:

  • sudo a2ensite default-ssl

meidän on myös otettava käyttöön ssl-params.conf – tiedostomme, jotta voimme lukea asettamamme arvot:

  • sudo a2enconf ssl-params

tässä vaiheessa sivustomme ja tarvittavat moduulit ovat käytössä. Meidän pitäisi tarkistaa, että ei ole syntaksivirheitä tiedostoissamme. Voimme tehdä tämän kirjoittamalla:

  • sudo apache2ctl configtest

jos kaikki onnistuu, saat tämän näköisen tuloksen:

Output
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this messageSyntax OK

ensimmäinen rivi on vain viesti, jossa kerrotaan, että ServerName – direktiiviä ei ole asetettu globaalisti. Jos haluat päästä viestistä eroon, voit asettaa ServerName palvelimesi verkkotunnuksen tai IP-osoitteen /etc/apache2/apache2.conf. Tämä on vapaaehtoista, sillä viestistä ei ole haittaa.

jos tulosteessa on Syntax OK, asetustiedostossa ei ole syntaksivirheitä. Voimme turvallisesti käynnistää Apache toteuttaa muutokset:

  • sudo systemctl restart apache2

Vaihe 5: Testaa salaus

nyt olemme valmiita testaamaan SSL-palvelintamme.

avaa verkkoselaimesi ja kirjoita https://, jota seuraa palvelimen verkkotunnus tai IP osoiteriville:

https://server_domain_or_IP

koska luomaamme varmennetta ei ole allekirjoittanut yksi selaimesi luotettavista varmenneviranomaisista, tulet todennäköisesti näkemään pelottavan näköisen varoituksen, kuten alla oleva varoitus.:

Apachen itse allekirjoittama cert-varoitus

tämä on odotettavissa ja normaalia. Olemme kiinnostuneita vain varmenteemme salausnäkökulmasta, emme isäntämme aitouden kolmannen osapuolen vahvistuksesta. Klikkaa ”ADVANCED” ja sitten linkki annetaan edetä isäntä anyways:

Apachen itse allekirjoittama ohitus

sinut tulee viedä sivustoosi. Jos katsot selaimen osoiteriville, näet lukon, jonka päällä on” x”. Tässä tapauksessa tämä tarkoittaa vain sitä, että varmennetta ei voida vahvistaa. Se salaa yhä yhteytesi.

jos määritit Apachen uudelleenohjaamaan HTTP: tä HTTPS: ään, voit myös tarkistaa, toimiiko uudelleenohjaus oikein:

http://server_domain_or_IP

jos tämä johtaa samaan kuvakkeeseen, tämä tarkoittaa, että uudelleenohjaus toimi oikein.

Vaihe 6: Vaihda pysyvään uudelleenohjaukseen

jos uudelleenohjaus toimi oikein ja haluat varmasti sallia vain salatun liikenteen, sinun tulisi muuttaa salaamatonta Apache-virtuaalipalvelinta uudelleen, jotta uudelleenohjaus olisi pysyvä.

avaa palvelinlohkoasetustiedosto uudelleen:

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

Etsi aiemmin lisäämämme rivi Redirect. Lisää permanent tälle riville, mikä muuttaa uudelleenohjauksen 302 väliaikaisesta uudelleenohjauksesta 301 pysyvään uudelleenohjaukseen:

/ etc/apache2/sites-available / 000-default.conf
<VirtualHost *:80> . . . Redirect permanent "/" "https://your_domain_or_IP/" . . .</VirtualHost>

Tallenna ja sulje tiedosto.

tarkista asetukset syntaksivirheiden varalta:

  • sudo apache2ctl configtest

kun olet valmis, käynnistä Apache uudelleen tehdäksesi uudelleenohjauksesta pysyvän:

  • sudo systemctl restart apache2

johtopäätös

olet määrittänyt Apache-palvelimesi käyttämään vahvaa salausta asiakasyhteyksiin. Näin voit palvella pyyntöjä turvallisesti ja estää ulkopuolisia lukemasta liikennettä.

Vastaa

Sähköpostiosoitettasi ei julkaista.