OpenSSL

Samfundet bruker nå letsencrypt for utstedelse av sertifikater.

Innlogging på StartSSL

StartSSL krever login med sertifikat, og har derfor en litt spesiell metode for å logge inn. Sertifikatet vi bruker er lagret (kryptert med passord) i en iceweasel-profil på felles/startssl/iceweasel-profile/. For å bruke denne setter du deg på en arbeidsstasjon (eller logger inn på en med ssh -X) og kjører iceweasel -P. Deretter velger du create profile, kjører gjennom den og velger den nevnte mappa for profilen. Ved senere anledninger kan du bruke denne profilen ved å kjøre iceweasel -P profilnavn. Ved innlogging på startssl.com velger du sertifikatet og skriver inn riktig passord.

Oppretting av sertifikat på StartSSL

  1. bjeff:~/samfundet-ca# ./ca.sh -req domene
  2. Gå til startssl.com.
  3. Hvis det er mer enn 30 dager siden sist domene validert må domenet valideres på ny via Validations Wizard.
  4. Gå til Certificates Wizard
  5. Velg Web Server SSL/TLS Certificate.
  6. Velg Skip og kopier innholdet fra domene/domene.req i boksen.
  7. Velg riktig domene, og skriv inn subdomene i neste steg. Vi har egne sertifikater for hvert subdomene, og benytter oss ikke av SubjectAltName, så legg kun til et subdomene her.
  8. Velg Continue for å fullføre.
  9. Legg domene.key fra bjeff og domene.crt som lastes ned fra startssl.com på ønsket sted.

Debug tips

Bruk echo | openssl s_client -connect billig.samfundet.no:443 -servername billig.samfundet.no | openssl x509 -noout -text for å koble til og printe ut informasjon om sertifikatet som er i bruk. Bare openssl s_client -connect billig.samfundet.no:443 -servername billig.samfundet.no can brukes om du vil koble til tilsvarende man gjør med netcat billig.samfundet.no 80 for manuell testing av HTTP. Videre er det smart å kjøre apache2ctl -S for å finne ut hvilken named virtualhost som svarer deg, her oppstår det ofte feil når folk setter opp. -starttls imap / -starttls smtp kan gis til s_client for debugging av mail sertifikat.

Hvordan lage og signere diverse selvsignerte sertifikat

Denne guiden er egentlig ikke nødvendig lengre, siden vi kun benytter oss av sertifikater fra StartSSL nå (med noen unntak, se oversikt nederst), men står her fortsatt for historisk oversikt og i fall noen skulle ønske å signere sertifikat selv allikevel.

Før hadde vi noen veldig fine perlscript som fikset alt fint og bra for oss, men disse støttet dessverre ikke 'Subject Alt name' som vi ønsker å bruke for å få flere ssl-vhoster på én IP (wiki.cacert.org for mer info). Derfor har vi nå et nokså enkelt lite shellscript som er laget for å spesifikt løse det mest vanlige usecaset vårt (for mer avanserte ting, lær deg å bruke openssl uten wrapperscript).

For å prøve å gjøre ting enklest mulig har vi hardkodet det meste vi trenger i openssl.cnf'en vi bruker og har noen linjer som '# commonName_default=REPLACE' og '# subjectAltName=REPLACE' som scriptet erstatter. Verdiene for disse hentes fra kommandolinja og fra fila conf/navn-på-common-name, verdiene i denne fila brukes til å generere subjectAltName-linja i ssl-configen. conf/navn-på-common-name skal inneholde ett DNS-navn per linje, og sertifikatet vil være gyldig for alle disse i tillegg til CN (CN bør også tas med i denne fila).

I forhold til tidligere praksis legges det nå opp til at vi skal revoke og signe request på nytt for å gjøre ting litt mer ryddig.

# ./ca.sh 
Usage: -(reqsign|req|sign|resign|revoke) common-name

Helt nytt sertifikat

#./ca.sh -req itk.samfundet.no
Generating a 1024 bit RSA private key
...........++++++
..++++++
writing new private key to 'itk.samfundet.no/itk.samfundet.no.key'
––-
#./ca.sh -sign itk.samfundet.no
Using configuration from /tmp/ssl-GdnDVd
Enter pass phrase for ./ca/private/cakey.pem:
Check that the request matches the signature
Signature ok
Certificate Details:
        Serial Number: 61 (0x3d)
        Validity
            Not Before: Sep 20 19:59:26 2007 GMT
            Not After : Sep 19 19:59:26 2008 GMT
        Subject:
            countryName               = NO
            stateOrProvinceName       = N/A
            organizationName          = Studentersamfundet i Trondhjem
            organizationalUnitName    = IT-Komiteen
            commonName                = itk.samfundet.no
            emailAddress              = itk@samfundet.no
        X509v3 extensions:
            X509v3 Basic Constraints: 
                CA:FALSE
            Netscape Comment: 
                OpenSSL Generated Certificate
            X509v3 Subject Key Identifier: 
                8C:55:DA:30:C2:E4:E0:1F:4C:BF:B6:24:7B:A7:94:57:11:4B:E9:3F
            X509v3 Authority Key Identifier: 
                keyid:B3:00:5F:69:12:EC:ED:D0:2F:31:26:5F:5C:90:42:FA:23:53:12:E2
                DirName:/C=NO/ST=N/A/L=Trondheim/O=Studentersamfundet i Trondhjem/OU=IT-Komiteen/CN=samfundet.no/emailAddress=itk@samfundet.no
                serial:00

            X509v3 Subject Alternative Name: 
                DNS:itk.samfundet.no, DNS:billig-*.samfundet.no, DNS:mdb2-*.samfundet.no, DNS:planet.samfundet.no, DNS:robokop.samfundet.no, DNS:secure.samfundet.no, DNS:traske.samfundet.no
Certificate is to be certified until Sep 19 19:59:26 2008 GMT (365 days)
Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

Fornye sertifikat

# ./ca.sh -resign itk.samfundet.no
Using configuration from /tmp/ssl-x6Rvcv
Enter pass phrase for ./ca/private/cakey.pem:
Revoking Certificate 3D.
Data Base Updated
Using configuration from /tmp/ssl-x6Rvcv
Enter pass phrase for ./ca/private/cakey.pem:
Check that the request matches the signature
Signature ok
Certificate Details:
        Serial Number: 62 (0x3e)
        Validity
            Not Before: Sep 20 20:01:52 2007 GMT
            Not After : Sep 19 20:01:52 2008 GMT
        Subject:
            countryName               = NO
            stateOrProvinceName       = N/A
            organizationName          = Studentersamfundet i Trondhjem
            organizationalUnitName    = IT-Komiteen
            commonName                = itk.samfundet.no
            emailAddress              = itk@samfundet.no
        X509v3 extensions:
            X509v3 Basic Constraints: 
                CA:FALSE
            Netscape Comment: 
                OpenSSL Generated Certificate
            X509v3 Subject Key Identifier: 
                8C:55:DA:30:C2:E4:E0:1F:4C:BF:B6:24:7B:A7:94:57:11:4B:E9:3F
            X509v3 Authority Key Identifier: 
                keyid:B3:00:5F:69:12:EC:ED:D0:2F:31:26:5F:5C:90:42:FA:23:53:12:E2
                DirName:/C=NO/ST=N/A/L=Trondheim/O=Studentersamfundet i Trondhjem/OU=IT-Komiteen/CN=samfundet.no/emailAddress=itk@samfundet.no
                serial:00

            X509v3 Subject Alternative Name: 
                DNS:itk.samfundet.no, DNS:billig-*.samfundet.no, DNS:mdb2-*.samfundet.no, DNS:planet.samfundet.no, DNS:robokop.samfundet.no, DNS:secure.samfundet.no, DNS:traske.samfundet.no
Certificate is to be certified until Sep 19 20:01:52 2008 GMT (365 days)
Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

Ugyldiggjøre gammelt sertifikat

# ./ca.sh -revoke itk.samfundet.no
Using configuration from /tmp/ssl-tOuEoI
Enter pass phrase for ./ca/private/cakey.pem:
Revoking Certificate 3E.
Data Base Updated

Legge til ekstra subjectaltname på eksisterende sertifikat

# echo itk-foobar.samfundet.no >> conf/itk.samfundet.no
# ./ca.sh -resign itk.samfundet.no
…

Installering av nye sertifikater

Sertifikatet som genereres legges i mappen som heter det samme CN som du lager til, feks:

itk.samfundet.no/
|– itk.samfundet.no.crt    Selve sertifikatet
|– itk.samfundet.no.pem    crt og key i samme fil
|– itk.samfundet.no.key    Privat nøkkel til sertifikatet
`– itk.samfundet.no.req    Forespørselen

Disse kan så legges på rett plass i forhold til tjennesten du skal lage nye sertifikat til (se tabellen under). Vær snill og ikke slett sertifikatene slik at det er enkelt å revoke og signere nye.

Husk chmod/chown og husk å restarte/reloade evt. tjenester som bruker disse sertifikatene.

Sjekking av utløpsdato for sertifikater

/usr/local/sbin på cass har et enkelt skript check_cert_expiry som kobler på alle portene skriptet vet om og rapporterer utløpsdato. For å få en forhåndsvarsling om når ting går kjøres denne i cron en gang i uken og gir beskjed om alt som løper ut innen de to neste ukene.

Sertifikater og hvor de ligger

Oversikten er sortert etter utløpsdato. Vennligst behold den sortert slik når du oppdaterer.

CNCAUtløpsdatoBruksområdeMaskinSti til sertifikatSti til hemmelig nøkkel
sql.samfundet.no Samfundet CA PostgreSQL cirkus /etc/postgresql-common/sql.samfundet.no.crt /etc/postgresql-common/sql.samfundet.no.key
acl.samfundet.no LE Web cirkus /etc/letsencrypt/live/acl.samfundet.no/fullchain.pem /etc/letsencrypt/live/acl.samfundet.no/privkey.pem
itk.samfundet.no LE Web cirkus /etc/letsencrypt/live/itk.samfundet.no/fullchain.pem /etc/letsencrypt/live/itk.samfundet.no/privkey.pem
traske.samfundet.no LE Web cirkus /etc/letsencrypt/live/traske.samfundet.no/fullchain.pem /etc/letsencrypt/live/traske.samfundet.no/privkey.pem
ufs.samfundet.no LE Web cirkus /etc/letsencrypt/live/ufs.samfundet.no/fullchain.pem /etc/letsencrypt/live/ufs.samfundet.no/privkey.pem
webmail.samfundet.no LE Web cirkus /etc/letsencrypt/live/webmail.samfundet.no/fullchain.pem /etc/letsencrypt/live/webmail.samfundet.no/privkey.pem
wiki.samfundet.no LE Web cirkus /etc/letsencrypt/live/wiki.samfundet.no/fullchain.pem /etc/letsencrypt/live/wiki.samfundet.no/privkey.pem
medlem.samfundet.no LE Web cirkus /etc/letsencrypt/live/medlem.samfundet.no/fullchain.pem /etc/letsencrypt/live/medlem.samfundet.no/privkey.pem
pst.samfundet.no LE Web cirkus /etc/letsencrypt/live/pst.samfundet.no/fullchain.pem /etc/letsencrypt/live/pst.samfundet.no/privkey.pem
gs.samfundet.no LE Web cirkus /etc/letsencrypt/live/gs.samfundet.no/fullchain.pem /etc/letsencrypt/live/gs.samfundet.no/privkey.pem
*.mdb2.samfundet.no LE Web cirkus /etc/letsencrypt/live/andrkn.mdb2.samfundet.no/fullchain.pem /etc/letsencrypt/live/andrkn.mdb2.samfundet.no/privkey.pem
*.billig.samfundet.no LE Web cirkus /etc/letsencrypt/live/edgarmv.billig.samfundet.no/fullchain.pem /etc/letsencrypt/live/edgarmv.billig.samfundet.no/privkey.pem
dyrt.samfundet.no LE Web cirkus /etc/letsencrypt/live/dyrt.samfundet.no/fullchain.pem /etc/letsencrypt/live/dyrt.samfundet.no/privkey.pem
billig.samfundet.no LE Web cirkus /etc/letsencrypt/live/billig.samfundet.no/fullchain.pem /etc/letsencrypt/live/billig.samfundet.no/privkey.pem
samba.samfundet.no LE Web cassarossa /etc/letsencrypt/live/samba.samfundet.no/fullchain.pem /etc/letsencrypt/live/samba.samfundet.no/privkey.pem
billettsalg.samfundet.no StartCom 2017-06-30 Web okkupasjon
smtp.samfundet.no LE Epost (SMTP) cassarossa /etc/exim4/ssl/fullchain.pem /etc/exim4/ssl/privkey-pem
*.uka.no LE Web cirkus /etc/letsencrypt/live/blix.uka.no/fullchain.pem /etc/letsencrypt/live/blix.uka.no/privkey.pem
*.ufs.samfundet.no LE Web cirkus /etc/letsencrypt/live/edgarmv.ufs.samfundet.no/fullchain.pem /etc/letsencrypt/live/edgarmv.ufs.samfundet.no/privkey.pem
vk.samfundet.no LE Web cirkus /etc/letsencrypt/live/vk.samfundet.no/fullchain.pem /etc/letsencrypt/live/vk.samfundet.no/privkey.pem
sikring.samfundet.no LE Web cirkus /etc/letsencrypt/live/sikring.samfundet.no/fullchain.pem /etc/letsencrypt/live/sikring.samfundet.no/privkey.pem
www.samfundet.no LE Web cirkus /etc/letsencrypt/live/www.samfundet.no/fullchain.pem /etc/letsencrypt/live/www.samfundet.no/privkey.pem
nagios.samfundet.no StartCom 2017-01-29 Web nagios /etc/apache2/ssl/nagios.samfundet.no.crt /etc/apache2/ssl/nagios.samfundet.no.key
munin.samfundet.no LE Web altersex /etc/letsencrypt/live/munin.samfundet.no/fullchain.pem /etc/letsencrypt/live/munin.samfundet.no/fullchain.pem
rt.samfundet.no LE Web cassarossa /etc/letsencrypt/live/rt.samfundet.no/fullchain.pem /etc/letsencrypt/live/rt.samfundet.no/privkey.pem
wpkg.samfundet.no LE Web cassarossa /etc/letsencrypt/live/wpkg.samfundet.no/fullchain.pem /etc/letsencrypt/live/wpkg.samfundet.no/privkey.pem
eximstats.samfundet.no LE Web cirkus /etc/letsencrypt/live/eximstats.samfundet.no/fullchain.pem /etc/letsencrypt/live/eximstats.samfundet.no/privkey.pem
imap.samfundet.no LE Epost (IMAP) cassarossa /etc/dovecot/ssl/imap.samfundet.no.le.fullchain.crt /etc/dovecot/ssl/imap.samfundet.no.le.key
nliv.uka.no LE Web cirkus /etc/letsencrypt/live/nliv.uka.no/fullchain.pem /etc/letsencrypt/live/nliv.uka.no/privkey.pem
robokop.samfundet.no LE Web cirkus /etc/letsencrypt/live/robokop.uka.no/fullchain.pem /etc/letsencrypt/live/robokop.uka.no/privkey.pem
sg.samfundet.no LE Web cirkus /etc/letsencrypt/live/sg.samfundet.no/fullchain.pem /etc/letsencrypt/live/sg.samfundet.no/privkey.pem
start.samfundet.no LE Web cirkus /etc/letsencrypt/live/start.samfundet.no/fullchain.pem /etc/letsencrypt/live/start.samfundet.no/privkey.pem
stats.uka.no LE Web cirkus /etc/letsencrypt/live/stats.uka.no/fullchain.pem /etc/letsencrypt/live/stats.uka.no/privkey.pem
wlan.samfundet.no LE Web altersex /etc/letsencrypt/live/wlan.samfundet.no/fullchain.pem /etc/letsencrypt/live/wlan.samfundet.no/privkey.pem
lists.samfundet.no LE Web cassarossa /etc/letsencrypt/live/lists.samfundet.no/fullchain.pem /etc/letsencrypt/live/lists.samfundet.no/privkey.pem
www-rails.samfundet.no LE Web cirkus /etc/letsencrypt/live/www-rails.samfundet.no/fullchain.pem /etc/letsencrypt/live/www-rails.samfundet.no/privkey.pem
bugs.uka.no LE Web cirkus /etc/letsencrypt/live/bugs.uka.no/fullchain.pem /etc/letsencrypt/live/bugs.uka.no/privkey.pem
robokop.uka.no LE Web cirkus /etc/letsencrypt/live/robokop.uka.no/fullchain.pem /etc/letsencrypt/live/robokop.uka.no/privkey.pem
fg.samfundet.no LE Web cirkus /etc/letsencrypt/live/fg.samfundet.no/fullchain.pem /etc/letsencrypt/live/fg.samfundet.no/privkey.pem
foto.samfundet.no LE Web cirkus /etc/letsencrypt/live/foto.samfundet.no/fullchain.pem /etc/letsencrypt/live/foto.samfundet.no/privkey.pem
dg.samfundet.no LE Web cirkus /etc/letsencrypt/live/dg.samfundet.no/fullchain.pem /etc/letsencrypt/live/dg.samfundet.no/privkey.pem
rss.samfundet.no LE Web cirkus /etc/letsencrypt/live/rss.samfundet.no/fullchain.pem /etc/letsencrypt/live/rss.samfundet.no/privkey.pem
www-beta.samfundet.no LE Web cirkus /etc/letsencrypt/live/www-beta.samfundet.no/fullchain.pem /etc/letsencrypt/live/www-beta.samfundet.no/privkey.pem
plakat.samfundet.no LE Web cirkus /etc/letsencrypt/live/plakat.samfundet.no/fullchain.pem /etc/letsencrypt/live/plakat.samfundet.no/privkey.pem

Lenker: Start, itkaclbruk, puppet

Mail: itk@samfundet.no | Telefon: 992 15 925 | Sist endret: 2017-06-19 22:41 | Revisjon: 148 (historie, blame) | Totalt: 1420 kB | Rediger