← Back to team overview

sslug-teknik team mailing list archive

Re: Server certificate expired

 

Jørgen Heesche wrote:
Henrik Størner wrote:
In <gm6q8e$d3u$1@xxxxxxxxxxxx> =?ISO-8859-1?Q?J=F8rgen_Heesche?= <heesche@xxxxxxxxxxx> writes:

Mit ssl-certifikat er udløbet, hvordan kan det forlænges?.
/etc/pki/tls/openssl.cnf:
. . .
default_days    = 365                   # how long to certify for
default_crl_days= 30                    # how long before next CRL
default_md      = sha1                  # which md to use.
preserve        = no                    # keep passed DN ordering
. . .

Er det et selv-udstedt certifikat, eller et officielt (købt) et ?

Certificatet fulgte med Mandriva 2008. Jeg har ikke selv foretaget mig
noget som helst for at få det; det var der bare da Mandriva var installeret.
Mandriva har en pakke med certifikater:
rootcerts - Bundle of CA Root Certificates
This is a bundle of X.509 certificates of public Certificate Authorities
(CA). These were automatically extracted from Mozilla's root CA list
(the file "certdata.txt"). It contains the certificates in both plain
text and PEM format and therefore can be directly used with an
Apache/mod_ssl webserver for SSL client authentication. Just configure
this file as the SSLCACertificateFile.

Certifkaterne er installeret i /etc/pki/tls/rootcerts


Helt fra bunden af, så starter du med at lave en cert. request:

# Customer role: Generate customer private key and a cert. request
openssl req -new -keyout mycert.key -out mycert.csr

# To view a certificate request
openssl req  -noout -text -in mycert.csr

Mit certificat er vistnok /etc/pki/tls/cert.pem, som er et link til
/etc/pki/tls/certs/ca-bundle.crt

Når jeg læser det med openssl ser jeg at det skulde være gyldigt mange år endnu.
CN=AAA Certificate Services
        Validity
            Not Before: Jan  1 00:00:00 2004 GMT
            Not After : Dec 31 23:59:59 2028 GMT

Hvorfor er det så udløbet nu?
Årsagen er tilsyneladende at der i openssl.cnf står
default_days    = 365
Kan jeg ikke bare rette openssl.cnf og få certificatet aktivt igen?.

CSR-filen sender du til din certifikat-udsteder, og de returnerer
så et SSL certifikat til dig.

Jeg har ikke nogen certifikat-udsteder; Mandriva har bare leveret et
certifikat sammen med Mandriva 2008.

Hvis du selv vil lege certifikat-udsteder, så skal du først sætte
dig op til at være en CA:

# CA role : Setup the new CA
openssl req -new -x509 -keyout private/CAkey.pem -out private/CAcert.pem
if [ ! -f serial ]; then echo "01" >serial; fi


Så signerer du den request du lavede til dit eget certifikat - og her
kan du vælge hvor lang tid det skal være gyldigt:

# CA role: Sign the certificate using the CA private key
openssl ca -out mycert.cer -infiles mycert.csr -days 730


Man kan se hvad et certifikat indeholder:

# To view a certificate
openssl x509 -noout -text -in mycert.cer


mycert.key indeholder din private nøgle (krypteret!) og mycert.cer
er dit certifikat. Det er de to filer som f.eks. Apache skal bruge
til at køre https. At den private nøgle er krypteret betyder at du
skal indtaste kodeordet når certifikatet skal bruges, f.eks. når
du genstarter Apache. Hvis man vil undgå det, kan man konvertere
key-filen til en ikke krypteret udgave:

# To remove encryption from the private key
mv mycert.key mycert.key.encrypted
openssl rsa -in mycert.key.encrypted -out mycert.key


Ovenstående ser lidt kompliceret ud.

I /etc/pki/tls/private har jeg filen localhost.key.
Er jeg allerede en CA?.
Det er jeg nok ikke, jeg har vist ikke forstået det helt endnu; har du et godt link til en HOWTO?, så jeg kan læse noget mere om rootcertifikater.


Mystikken breder sig.
I /etc/pki/tls/cert findes der en fil localhost.crt, som er oprettet uden min medvirken på det tidspunkt mit certifikat meldes udløbet.
I begyndelsen af localhost.crt ses dette:

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 23760 (0x5cd0)
        Signature Algorithm: sha1WithRSAEncryption
Issuer: C=--, ST=SomeState, L=SomeCity, O=SomeOrganization, OU=SomeOrganizationalUnit, CN=localhost/emailAddress=root@localhost
        Validity
            Not Before: Jan 30 21:20:12 2008 GMT
            Not After : Jan 29 21:20:12 2009 GMT

Tidspunket Jan 29 21:20:12 2009 GMT
er det tidspunkt der angives i meddelelsen 'Server certificate expired'

--
Med venlig hilsen

Jørgen Heesche
mailto:heesche@xxxxxxxxxxx


Follow ups

References