Kokebok for bestilling og utsteding av SSL-sertifikater (Uninett)

UiO er godkjent til å utstede sertifikater under domenenavnet uio.no.

Kom i gang

Du trenger:

All forekomst av 'www.foo.uio.no' i teksten skal byttes ut med navnet/URL-en som sertifikatet skal bindes til. Dvs. fullt domenenavn (FQDN), f.eks. www.admin.uio.no eller universitas.uio.no

VIKTIG: Hvis du klipper ut innholdet fra CSR-fila i windows etter å la laget den på en *nix maskin, så du bruke Wordpad og for all del ikke Notepad.

Generere nøkkel og CSR

Start med å lage en www.foo.uio.no.cnf fil. Typisk vil den inneholde:

[ req ]
default_bits = 4096
prompt = no
encrypt_key = no
default_md = sha256
distinguished_name = dn
utf8 = yes

[ dn ]
C = NO
L = Oslo
O = Universitetet i Oslo
OU = USIT
CN = www.foo.uio.no

Det som må gjøres her er å bytte ut OU og CN. OU står for navn på organisasjonsenhet og CN står for domenenavn, som blir 'www.foo.uio.no' i vårt tilfelle.

Hvis du skal bestille sertifikat for flere DNS-navn (aliaser) blir .cnf-filen litt annerledes:

[ req ]
default_bits = 4096
prompt = no
encrypt_key = no
default_md = sha256
distinguished_name = dn
utf8 = yes
req_extensions = v3_req

[ v3_req ]
subjectAltName = @alt_names

[ dn ]
C = NO
L = Oslo
O = Universitetet i Oslo
OU = USIT
CN = www.foo.uio.no

[alt_names]
DNS.0 = www.foo.uio.no
DNS.1 = foo.uio.no

Bytt ut OU og CN. CN skal være lik DNS.0. I tillegg er DNS.1 da et alias. Om man har behov for flere alias legger man til DNS.2, DNS.3 osv.

Deretter lager du en RSA-nøkkel og en CSR (Certificate Signing Request) ved hjelp av OpenSSL. Lagre dem et sted du finner det igjen. Du trenger ikke lage nøkkel og CSR på samme maskin som sertifikatet skal bindes til.

maskin.uio.no# openssl req -new -config www.foo.uio.no.cnf -keyout www.foo.uio.no.key -out www.foo.uio.no.csr
Generating a 4096 bit RSA private key
............+++
.+++
writing new private key to 'www.foo.uio.no.key'
-----

Neste steg er å beskytte den private nøkkelen. Velg en sikker passordfrase, og husk den. Den kan endres i ettertid hvis du husker den gamle. Ta en backup av filen www.foo.uio.no.key.

maskin.uio.no# openssl rsa -in www.foo.uio.no.key -aes256 -out www.foo.uio.no-enc.key
writing RSA key
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:

Den krypterte nøkkelen vil lagres i www.foo.uio.no-enc.key, og den ukrypterte nøkkelen i (www.foo.uio.no.key)

Hvis du ønsker det, kan du se nøkkelparet i klartekst med:

maskin.uio.no# openssl rsa -noout -text -in www.foo.uio.no.key
...[bøttevis av output]

Du har muligheten til å lagre den private nøkkelen i klartekst, men dette frarådes.

Før du gjør noe som helst bør du forsikre deg om at du har en backup av den private nøkkelen.

NB: Når du bestiller via Nettskjema er prosessen (utenom godkjenning) automatisert, som vil dekke de fleste vanlige behov. Vi bruker per i dag kun SHA256 som hash, og vi bestiller kun multidomain/SAN, ikke stjerne/wildcard-sertifikater. Hvis du av spesielle grunner skulle trenge noe annet enn dette  kan du ikke benytte skjemaet, og må istedet kontakte oss på www-drift@usit.uio.no.

Deretter fyller du ut de nødvendige opplysningene på bestillingsskjema

 

Det ferdige sertifikatet blir tilsendt på e-post. Lagre sertifikatet som www.foo.uio.no.crt.

Legg opp sertifikat på Apache-web-server

Du trenger:

Vi anbefaler å kjøre Apache fra RedHat, og aller helst på RHEL7 eller høyere. Sertifikatfilene kan da egentlig ligge hvor som helst, men det er gjerne ryddig å legge de under:

/etc/httpd/certificates/

Sørg for å sikre filene, i hvert fall nøkkelen:

maskin.uio.no# chmod 400 /etc/httpd/certificates/*.key
maskin.uio.no# chmod 440 /etc/httpd/certificates/*.crt

Filene bør eies av root (Apache vil lese dem før den dropper root-rettigheter):

maskin.uio.no# chown root:root /etc/httpd/certificates/*

For å ta i bruk sertifikatet, må flg. legges inn i VirtualHost-konfigurasjonen:

SSLEngine On
SSLCertificateFile /etc/httpd/certificates/www.foo.uio.crt
SSLCertificateKeyFile /etc/httpd/certificates/www.foo.uio.key
SSLCertificateChainFile /etc/httpd/certificates/DigiCertCA.crt

Dersom man skal tilby flere domenenavn fra samme Apache-instans, og dermed ha flere VirtualHost-blokker med forskjellige sertifikater, er klienten nødt til å støtte Server Name Indication. Dette vil være tilfelle for alle klienter av nyere dato, men f.eks. RHEL5 og Android <4 mangler SNI-støtte.

Videre må man sørge for sikker konfigurasjon av krypto. Det anbefales å benytte Mozillas anbefalte konfig for dette. Intermediate-nivået er anbefalt for å sikre bakoverkompatibilitet med eldre klienter, men Modern er foretrukket for høyest sikkerhet. Fra eksempelet, bør sistnevnte konfigurasjonssnutt (utenfor VirtualHost) legges inn i /etc/httpd/conf.d/ssl.conf, og man bør bekrefte at SSLCipherSuite-innstillingen erstatter tidligere forekomster.

Man bør dessuten sørge for at all ukryptert trafikk omdirigeres til HTTPS. Apaches wiki har en grei guide på hvordan dette enkelt kan gjøres. Vær også OBS på at dersom HSTS-sjekkboksen er valgt i Mozillas konfigurasjons-generator, vil nettlesere gå direkte til HTTPS etter første besøk, uavhengig av hvorvidt brukeren faktisk har tastet https://

Start til slutt SSL-serveren med:

maskin.uio.no# /etc/init.d/httpd start
Apache/2.4.6 mod_ssl/2.4.6 (Pass Phrase Dialog)
Some of your private key files are encrypted for sequrity resasons.
IN order to read them you have to provide us with the pass phrase. 

Server www.foo.uio.no:443 (RSA)
Enter pass phrase:

 

Sertifikat på IIS-webserver

For IIS-webservere (og de fleste andre Microsoft-produkter) må man enten bestille PFX i skjemaet, eller konvertere sertifikatet. Man mottar gjerne sertifikatet som en zip-fil. Zip-filen pakkes ut på vanlig måte før man starter konverteringen.

.crt-filen brukes, sammen med intermediate-sertifikat og nøkkelen som man laget sammen med den opprinnelige bestillingen, til å lage en PFX. 

openssl pkcs12 -export -in www.foo.uio.no.crt -inkey www.foo.uio.no.key -out www.foo.uio.no.pfx -certfile DigiCertCA.crt

Resultatet, www.foo.uio.no.pfx, kan så importeres i IIS.

 

Andre opplysninger rundt sertifikater fra Uninett

Deretter "finner" du fram følgende:

CSR

Innholdet i din CSR skal se ut omtrent som dette:

-----BEGIN CERTIFICATE REQUEST-----
MIIB1jCCAT8CAQAwgZUxCzAJBgNVBAYTAk5PMQ8wDQYDVQQIEwZOb3J3YXkxDTAL
BgNVBAcTBE9zbG8xGzAZBgNVBAoTElVuaXZlcnNpdHkgb2cgT3NsbzENMAsGA1UE
CxMEVVNJVDEUMBIGA1UEAxMLdGVzdC51aW8ubm8xJDAiBgkqhkiG9w0BCQEWFXdl
Ym1hc3RlckB1c2l0LnVpby5ubzCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA
pLBeDow+X0ZfFrEnYPsljVmI45IZTakVpqqh/0JXNfffUA6JA/scbpBcOLtstgo6
XPK3AXvX9/dHbrMFkMB/MxQjZdANGz+IBTMjEhmrP/a0bBImMyGribMN021kln6S
t8QJkFy0sXIRKFzGLAp19EnM0w5J9WthHaCZcSu8oScCAwEAAaAAMA0GCSqGSIb3
DQEBBAUAA4GBACnD/K+jihjIP6SKRUJa4Y7kdxyzh6ydV9ZOQFUKJsPTLmkeuIb2
7hHFStjnWjy7Zd4XratKb4MwO0k/7h+TyYTL+j6hoAPhqQA0/y2zndehx4bhUUNc
KLhnBZIsg93/Iwt9bW9rJmrhLkjHAW0mRQa0y3O9jArQKFofE+k6bqxu
-----END CERTIFICATE REQUEST-----

Når du skal fylle ut bestillingsskjemaet må du sende med alt f.o.m ----BEGIN... t.o.m. END CERTIFICATE REQUEST-----

Sertifikatets levetid

Gyldig levetid for et sertifikat er for tiden ett eller to år. Du velger sertifikatets levetid i bestillingsskjemaet. Lengre gyldighet er ikke lenger tillatt.

Merk at Apple fom. 2020-09-01 ikke lenger vil tillate sertifikat med gyldighet på mer enn 13 måneder - i praksis 1 år. Sertifikat utstedt etter 2020-09-01 vil gi advarsel i Safari, og formodentlig vil andre Apple-produkter oppleve problemer ved bruk av slike sertifikater. For å unngå slike problemer vil vi formodentlig fom. september 2020 også slutte å utstede sertifikat med annen gyldighet enn 1 år, og det anbefales derfor at dersom man har behov for sertifikat med 2 års gyldighet bør man få dette utstedt eller fornyet senest innen utgangen av august.

Hvordan endre pass phrase på den private nøkkelen

Du kan endre passordfraser på de private nøklene på denne måten:

maskin.uio.no# openssl rsa -aes256 -in www.foo.uio.no.key -out www.foo.uio.no.key.new
read RSA key
Enter PEM pass phrase:
writing PEM pass phrase:
Werifying password - Enter PEM pass phrase:

maskin.uio.no# mv www.foo.uio.no.key.new www.foo.uio.no.key

Sjekke gyldighetsdatoer for et SSL-sertifikat

maskin.uio.no# openssl x509 -startdate -enddate -noout < www.foo.uio.no.crt
notBefore=Feb 16 12:00:51 2017 GMT
notAfter=Feb 18 16:23:16 2018 GMT

Når får jeg sertifikatet mitt

Alle sertifikater må godkjennes manuelt før de kan utstedes, og det er kun et fåtall ansatte som har rettigheter til å gjøre dette. Dette skjer fortløpende, men noe ventetid kan måtte påregnes ifbm. ferie osv. Dersom noe haster er det lov å masespørre pent om sertifikatkøen kan behandles, f.eks. på chat eller i en ticket.