(Re)Generering av sertifikater

Beskriver bruk av script for oppretting av nye sertifikat til CIS

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

  1. Et nytt, selvsignert server-sertifikat opprettes, dersom dette ikke alt finnes.

  2. 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
    
Publisert 1. okt. 2014 14:46