dwww Home | Manual pages | Find package

IO::So...:Utils(3pm)  User Contributed Perl Documentation  IO::So...:Utils(3pm)

NAME
       IO::Socket::SSL::Utils -- loading, storing, creating certificates and
       keys

SYNOPSIS
           use IO::Socket::SSL::Utils;

           $cert = PEM_file2cert('cert.pem');     # load certificate from file
           my $hash = CERT_asHash($cert);         # get details from certificate
           PEM_cert2file($cert,'cert.pem');       # write certificate to file
           CERT_free($cert);                      # free memory within OpenSSL

           @certs = PEM_file2certs('chain.pem');  # load multiple certificates from file
           PEM_certs2file('chain.pem', @certs);   # write multiple certificates to file
           CERT_free(@certs);                     # free memory for all within OpenSSL

           my $cert = PEM_string2cert($pem);      # load certificate from PEM string
           $pem = PEM_cert2string($cert);         # convert certificate to PEM string

           $key = KEY_create_rsa(2048);           # create new 2048-bit RSA key
           PEM_key2file($key,"key.pem");          # and write it to file
           KEY_free($key);                        # free memory within OpenSSL

DESCRIPTION
       This module provides various utility functions to work with certificates
       and private keys, shielding some of the complexity of the underlying
       Net::SSLeay and OpenSSL.

FUNCTIONS
       •   Functions  converting  between  string  or file and certificates and
           keys.  They croak if the operation cannot be completed.

           PEM_file2cert(file) -> cert
           PEM_cert2file(cert,file)
           PEM_file2certs(file) -> @certs
           PEM_certs2file(file,@certs)
           PEM_string2cert(string) -> cert
           PEM_cert2string(cert) -> string
           PEM_file2key(file) -> key
           PEM_key2file(key,file)
           PEM_string2key(string) -> key
           PEM_key2string(key) -> string
       •   Functions for cleaning up.  Each loaded or created cert and key must
           be freed to not leak memory.

           CERT_free(@certs)
           KEY_free(@keys)
       •   KEY_create_rsa(bits) -> key

           Creates an RSA key pair, bits defaults to 2048.

       •   KEY_create_ec(curve) -> key

           Creates an EC key, curve defaults to "prime256v1".

       •   CERT_asHash(cert,[digest_algo]) -> hash

           Extracts the information from the certificate into a hash  and  uses
           the  given  digest_algo  (default:  SHA-256)  to determine digest of
           pubkey and cert.  The resulting hash contains:

           subject Hash  with  the  parts  of  the  subject,  e.g.  commonName,
                   countryName,      organizationName,     stateOrProvinceName,
                   localityName. If there are multiple values for any of  these
                   parts the hash value will be an array ref with the values in
                   order instead of just a scalar.

           subjectAltNames
                   Array with list of alternative names. Each entry in the list
                   is  of "[type,value]", where "type" can be OTHERNAME, EMAIL,
                   DNS, X400, DIRNAME, EDIPARTY, URI, IP or RID.

           issuer  Hash  with  the  parts  of  the  issuer,  e.g.   commonName,
                   countryName,      organizationName,     stateOrProvinceName,
                   localityName. If there are multiple values for any of  these
                   parts the hash value will be an array ref with the values in
                   order instead of just a scalar.

           not_before, not_after
                   The  time  frame, where the certificate is valid, as time_t,
                   e.g. can be converted with localtime or similar functions.

           serial  The serial number

           crl_uri List of URIs for CRL distribution.

           ocsp_uri
                   List of URIs for revocation checking using OCSP.

           keyusage
                   List of keyUsage information in the certificate.

           extkeyusage
                   List of extended key usage information from the certificate.
                   Each entry in this list consists of a hash with oid, nid, ln
                   and sn.

           pubkey_digest_xxx
                   Binary  digest  of  the  pubkey  using  the   given   digest
                   algorithm,   e.g.   pubkey_digest_sha256  if  (the  default)
                   SHA-256 was used.

           x509_digest_xxx
                   Binary digest of  the  X.509  certificate  using  the  given
                   digest  algorithm, e.g.  x509_digest_sha256 if (the default)
                   SHA-256 was used.

           fingerprint_xxx
                   Fingerprint  of  the  certificate  using  the  given  digest
                   algorithm, e.g.  fingerprint_sha256 if (the default) SHA-256
                   was  used. Contrary to digest_* this is an ASCII string with
                   a list if hexadecimal numbers, e.g.  "73:59:75:5C:6D...".

           signature_alg
                   Algorithm     used     to     sign     certificate,     e.g.
                   "sha256WithRSAEncryption".

           ext     List  of  extensions.  Each entry in the list is a hash with
                   oid, nid, sn,  critical  flag  (boolean)  and  data  (string
                   representation given by X509V3_EXT_print).

           version Certificate version, usually 2 (x509v3)

       •   CERT_create(hash) -> (cert,key)

           Creates a certificate based on the given hash.  If the issuer is not
           specified  the  certificate will be self-signed.  The following keys
           can be given:

           subject Hash  with  the  parts  of  the  subject,  e.g.  commonName,
                   countryName,  ...  as  described  in "CERT_asHash".  Default
                   points to IO::Socket::SSL.

           not_before
                   A time_t value when the  certificate  starts  to  be  valid.
                   Defaults to current time.

           not_after
                   A  time_t  value  when  the  certificate  ends  to be valid.
                   Defaults to current time plus one 365 days.

           serial  The serial number. If not given  a  random  number  will  be
                   used.

           version The version of the certificate, default 2 (x509v3).

           CA true|false
                   If true declare certificate as CA, defaults to false.

           purpose string|array|hash
                   Set  the purpose of the certificate.  The different purposes
                   can be given as a string separated by non-word character, as
                   array or hash. With string or  array  each  purpose  can  be
                   prefixed  with '+' (enable) or '-' (disable) and same can be
                   done with the  value  when  given  as  a  hash.  By  default
                   enabling the purpose is assumed.

                   If   the   CA   option   is  given  and  true  the  defaults
                   "ca,sslca,emailca,objca" are assumed, but can be  overridden
                   with  explicit purpose.  If the CA option is given and false
                   the defaults "server,client" are assumed.  If no  CA  option
                   and no purpose is given it defaults to "server,client".

                   Purpose  affects basicConstraints, keyUsage, extKeyUsage and
                   netscapeCertType.  The following purposes are defined  (case
                   is not important):

                       client
                       server
                       email
                       objsign

                       CA
                       sslCA
                       emailCA
                       objCA

                       emailProtection
                       codeSigning
                       timeStamping

                       digitalSignature
                       nonRepudiation
                       keyEncipherment
                       dataEncipherment
                       keyAgreement
                       keyCertSign
                       cRLSign
                       encipherOnly
                       decipherOnly

                   Examples:

                        # root-CA for SSL certificates
                        purpose => 'sslCA'   # or CA => 1

                        # server certificate and CA (typically self-signed)
                        purpose => 'sslCA,server'

                        # client certificate
                        purpose => 'client',

           ext [{ sn => .., data => ... }, ... ]
                   List  of  extensions.  The  type  of  the  extension  can be
                   specified as name with "sn" or as NID  with  "nid"  and  the
                   data  with  "data". These data must be in the same syntax as
                   expected   within   openssl.cnf,   e.g.    something    like
                   "OCSP;URI=http://...". Additionally the critical flag can be
                   set with "critical =" 1>.

           key key use  given  key  as key for certificate, otherwise a new one
                   will be generated and returned

           issuer_cert cert
                   set issuer for new certificate

           issuer_key key
                   sign new certificate with given key

           issuer [ cert, key ]
                   Instead of giving issuer_key  and  issuer_cert  as  separate
                   arguments they can be given both together.

           digest algorithm
                   specify  the algorithm used to sign the certificate, default
                   SHA-256.

           ignore_invalid_args
                   ignore any unknown arguments which might be in the  argument
                   list  (which might be in the arguments for example as result
                   from CERT_asHash)

AUTHOR
       Steffen Ullrich

perl v5.38.2                       2024-09-01              IO::So...:Utils(3pm)

Generated by dwww version 1.16 on Tue Dec 16 07:36:28 CET 2025.