Innhold
1 Generering av nye SSL sertifikat
Vi har et script for å produsere nye sertifikat for CIS server og klient. Dette ligger i <cerebrum_config.git>/bin/cis_certificate_regenerate.py.
Scriptet benytter seg av konfigurasjonsvariabler fra cisconf for plassering av server-sertifikat (cisconf.SERVER_CERTIFICATE_FILE).
Ved kjøring vil
Et nytt, selvsignert server-sertifikat opprettes, dersom dette ikke alt finnes.
Et klient-sertifikat opprettes og signeres av server-sertifikat. Både sertifikat og privatnøkkel plasseres i mappen spesifisert med --location.
Scriptet vil da opprette filene client.key (privatnøkkel), client.pem (sertifikat), og client.pem.key (en fil med både sertifikat og privatnøkkel, brukt bl.a. av PHP sin native SoapClient-klasse). Filer med samme navn under --location, vil overskrives!
1.1 Merknader
- Scriptet kjører som standard med dryrun. For å skrive filer, må flagget --commit spesifiseres.
- Scriptet logger til <log_dir>/cis_certificate_regenerate.py/log, hvor <log_dir> er gitt i cereconf.LOGGING_ROOT_DIR.
- Kjør alltid script med dryrun og sjekk logg før --commit benyttes
1.2 Forutsetninger
- cisconf er satt opp med SERVER_CERTIFICATE_FILE
1.3 Obligatoriske parameter
- --location - Et gyldig banenavn hvor scriptet har skrivetilgang. Her vil klient-sertifikat plasseres.
- --server-cn - Common Name for server-sertifikat. Dette vil typisk være hostname for tjeneren hvor web servicen kjører.
- --client-cn - Common Name for klienten. Dette vil typisk være hostname hvor klienten kjører fra.
1.4 Kjøring
Typisk kjøring vil involvere:
python cis_certificate_regenerate.py --location /path/to/client/certs \ --server-cn server.example.org \ --client-cn client.example.org cat /path/to/logging_root_dir/cis_certificate_regenerate.py/log python cis_certificate_regenerate.py --location /path/to/client/certs \ --server-cn server.example.org \ --client-cn client.example.org \ --commit
Deretter vil man vanligvis legge inn fingerprint til klientsertifikat (skrives ut under kjøring, eller hentes vha. openssl) i cisconf:
- Dersom sertifikatet er gyldig for alle CIS web services for en instans, legges sertifikatets fingerprint inn i cisconf/base.py
- Dersom sertifikatet kun er gyldig for en tjeneste, legges sertifikatets fingerprint inn i cisconf/<tjeneste>.py
1.5 Tips
Hvis generering av klientsertifikat brekker, så vil du antagelig legge tjenerens private nøkkel, i samme fil som sertifikatet. CisClient knekker hvis dette ikke er gjort.
1.6 Openssl
Noen openssl-linjer som kan være nyttig for inspeksjon av sertifikat.
Se PEM-sertifikat:
openssl x509 -noout -text -in /path/to/cert.pem
Se fingerprint for PEM-sertifikat:
openssl x509 -noout -fingerprint -in /path/to/cert.pem
Sjekke om sertifikat validerer:
openssl verify -verbose -CAfile /path/to/server.pem /path/to/client.pem