NAME
ipsec scepclient - Client for the SCEP protocol
SYNOPSIS
ipsec scepclient [argument ...]
ipsec scepclient --help
ipsec scepclient --version
DESCRIPTION
scepclient is a client implementation of Cisco System’s Simple
Certificate Enrollment Protocol (SCEP) written for Linux strongSwan
<http://www.strongswan.org>. scepclient is designed to be used for
certificate enrollment on machines using the OpenSource IPsec solution
strongSwan.
FEATURES
scepclient implements the following features of SCEP:
- Automatic enrollment of client certificate using a preshared secret
- Manual enrollment of client certificate. Offline fingerprint check
required!
- Acquisition of CA certificate(s)
OPTIONS
Basic Startup Options
-v, --version
Display the version of ipsec scepclient.
-h, --help
Display usage of ipsec scepclient.
General Options
-u, --url url
Full HTTP URL of the SCEP server to be used for certificate
enrollment and CA certificate acquisition.
-+, --optionsfrom filename
Reads additional options from filename.
-f, --force
Overwrite existing output file[s].
-q, --quiet
Do not write log output to stderr.
Options for CA Certificate Acquisition
-o, --out cacert[=filename]
Output file of acquired CA certificate. If more then one CA
certificate is available, filename is used as prefix for the
resulting files.
The default filename is $CONFDIR/ipsec.d/cacerts/caCert.der.
Options For Certificate Enrollment
-i, --in type[=filename]
Input file for certificate enrollment. This option can be specified
multiple times to specify input files for every type. Input files
can bei either DER or PEM encoded.
Supported values for type:
pkcs1 RSA private key in PKCS#1 file format. If no input of
this type is specified, a RSA key gets generated.
The default filename is
$CONFDIR/ipsec.d/private/myKey.der.
cacert-enc CA certificate to encrypt the SCEP request. Has to be
specified for certificate enrollment.
The default filename is
$CONFDIR/ipsec.d/cacerts/caCert.der.
cacert-sig CA certificate to check signature of SCEP reply. Has to
be specified for certificate enrollment.
The default filename is
$CONFDIR/ipsec.d/cacerts/caCert.der.
-k, --keylength bits
sets the key length for RSA key generation. The default length for
a generated rsa key is set to 2048 bit.
-D, --days days
Validity of the self-signed X.509 certificate in days. The default
is 1825 days (5 years).
-S, --startdate YYMMDDHHMMSSZ
defines the notBefore date when the X.509 certificate becomes
valid. The date has the format YYMMDDHHMMSS and must be
specified in UTC (Zulu time). If the --startdate option is not
specified then the current date is taken as a default.
-E, --enddate YYMMDDHHMMSSZ
defines the notAfter date when the X.509 certificate will expire.
The date has the format YYMMDDHHMMSS and must be specified in UTC
(Zulu time). If the --enddate option is not specified then the
default notAfter value is computed by adding the validity interval
specified by the --days option to the notBefore date.
-d, --dn dn
Distinguished name as comma separated list of relative
distinguished names. Use quotation marks for a distinguished name
containing spaces. If the --dn parameter is missing then the
default "C=CH, O=Linux strongSwan, CN=hostname" is used with
hostname being the return value of the gethostname() function.
-s, --subjectAltName type=value
Include subjectAltName in certificate request. This option can be
specified multiple times to specify a subjectAltName for every
type.
Supported values for type:
email subjectAltName is a email address.
dns subjectAltName is a hostname.
ip subjectAltName is a IP address.
-p, --password pw
Password to be included as a challenge password in SCEP request.
If pw is %prompt’, the password gets prompted for on the command
line.
- In automatic mode, this password corresponds to the
preshared secret for the given enrollment.
- In manual mode, this password can be used to later revoke
the corresponding certificate.
-a, --algorithm algo
Change symmetric algorithm to use for encryption of certificate
Request. The default is 3des-cbc.
Supported values for algo:
des DES-CBC encryption (key size = 56 bit).
3des Triple DES-EDE-CBC encryption (key size = 168 bit).
aes128 AES-CBC encryption (key size = 128 bit).
aes192 AES-CBC encryption (key size = 192 bit).
aes256 AES-CBC encryption (key size = 256 bit).
camellia128 Camellia-CBC encryption (key size = 128 bit).
camellia192 Camelllia-CBC encryption (key size = 192 bit).
camellia256 Camellia-CBC encryption (key size = 256 bit).
-o, --out type[=filename]
Output file for certificate enrollment. This option can be
specified multiple times to specify output files for every type.
Supported values for type:
pkcs1 RSA private key in PKCS#1 file format. If specified,
the RSA key used for enrollment is stored in file
filename. If none of the types listed below are
specified, scepclient will stop after outputting this
file.
The default filename is
$CONFDIR/ipsec.d/private/myKey.der.
pkcs10 PKCS#10 certificate request. If specified, the PKCS#10
request used or certificate enrollment is stored in
file filename. If none of the types listed below are
specified, scepclient will stop after outputting this
file.
The default filename is $CONFDIR/ipsec.d/req/myReq.der.
pkcs7 PKCS#7 SCEP request as it is sent using HTTP to the
SCEP server. If specified, this SCEP request is stored
in file filename. If none of types listed below is not
specified, scepclient will stop after outputting this
file.
The default filename is $CONFDIR/ipsec.d/req/pkcs7.der.
cert-self Self-signed certificate. If specified the self-signed
certificate is stored in file filename.
The default filename is
$CONFDIR/ipsec.d/certs/selfCert.der.
cert Enrolled certificate. This type must be specified for
certificate enrollment. The enrolled certificate is
stored in file filename.
The default filename is set to
$CONFDIR/ipsec.d/certs/myCert.der.
-m, --method method
Change HTTP request method for certificate enrollment. Default is
get.
Supported values for method:
post Certificate enrollment using HTTP POST. Must be
supported by the given SCEP server.
get Certificate enrollment using HTTP GET.
-t, --interval seconds
Set interval time in seconds when polling in manual mode. The
default interval is set to 5 seconds.
-x, --maxpolltime seconds
Set max time in seconds to poll in manual mode. The default max
time is set to unlimited.
Debugging Output Options:
-A, --debug-all
Log everything except private data.
-P, --debug-parsing
Log parsing relevant stuff.
-R, --debug-raw
Log raw hex dumps.
-C, --debug-control
Log informations about control flow.
-M, --debug-controlmore
Log more detailed informations about control flow.
-X, --debug-private
Log sensitive data (e.g. private keys).
EXAMPLES
ipsec scepclient --out caCert --url
http://scepserver/cgi-bin/pkiclient.exe -f
Acquire CA certificate from SCEP server and store it in the default
file $CONFDIR/ipsec.d/cacerts/caCert.der. If more then one CA
certificate is returned, store them in files named caCert.der-1’,
caCert.der-2’, etc.
Existing files are overwritten.
ipsec scepclient --out pkcs1=joeKey.der -k 1024
Generate RSA private key with key length of 1024 bit and store it
in file joeKey.der.
ipsec scepclient --in pkcs1=joeKey.der --out pkcs10=joeReq.der \
--dn ”C=AT, CN=John Doe” -s email=john@doe.com -p mypassword
Generate a PKCS#10 request and store it in file joeReq.der. Use the
RSA private key joeKey.der created earlier to sign the
PKCS#10-Request. In addition to the distinguished name include a
email-subjectAltName and a challenge password in the request.
ipsec scepclient --out pkcs1=joeKey.der --out cert==joeCert.der \
--dn ”C=CH, CN=John Doe” -k 512 -p 5xH2pnT7wq \
--url http://scep.hsr.ch/cgi-bin/pkiclient.exe \
--in cacert-enc=caCert.der --in cacert-sig=caCert.der
Generate a new RSA key for the request and store it in joeKey.der.
Then enroll a certificate and store as joeCert.der. The challenge
password is ’5xH2pnT7wq’. The encryption and signature check has to
be made with the same CA certificate caCert.der.
BUGS
--optionsfrom seems to have parsing problems reading option files
containing strings in quotation marks.
COPYRIGHT
Copyright (C) 2005 Jan Hutter, Martin Willi
Hochschule fuer Technik Rapperswil
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2 of the License, or (at your
option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.