Hello,
while trying to setup my own CA i am getting below
error:
# openssl req -new -x509 -extensions v3_ca -keyout
private/cakey.pem -out cacert.pem
Generating a 2048 bit RSA private key
..+++
.........................................................................................+++
writing new private key to 'private/cakey.pem'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
problems making Certificate Request
13175:error:0D07A097:asn1 encoding
routines:ASN1_mbstring_copy:string too
long:/usr/src/lib/libssl/src/crypto/asn1/a_mbstr.c:154:maxsize=2
#
file permissions:
# pwd
/etc/ssl
# ls -ltr
total 348
drwxr-xr-x 2 root wheel 512 Aug 28 11:00 lib
-r--r--r-- 1 root bin 895 Aug 28 11:00
x509v3.cnf
-r--r--r-- 1 root bin 151917 Aug 28 11:00
cert.pem
drwxr-xr-x 4 root wheel 512 Nov 21 23:00
orig.dir.with.contents
drwxr-xr-x 2 root wheel 512 Nov 25 21:01 crl
drwxr-xr-x 2 root wheel 512 Nov 25 21:01
newcerts
-rw-r--r-- 1 root wheel 0 Nov 25 21:01
certindex.txt
-rw-r--r-- 1 root wheel 7 Nov 25 21:01 serial
drwxr-xr-x 2 root wheel 512 Nov 27 22:23
issuedcerts
-r--r--r-- 1 root bin 6889 Dec 6 10:50
openssl.cnf
drwx------ 2 root wheel 512 Dec 9 00:12 private
# ls -l private
total 4
-rw-r--r-- 1 root wheel 1743 Dec 9 00:13 cakey.pem
# ls -l issuedcerts
# ls -l newcerts
#
here is my config file:
$ cat /etc/ssl/openssl.cnf
#
# OpenSSL example configuration file.
# This is mostly being used for generation of
certificate requests.
# Plus,
# I have configured it for generating CA cert too.
#
RANDFILE = /dev/arandom
dir = /etc/ssl # working dir
for all operations
[ ca ] # section for CA settings
default_ca = CA_default # default CA
settings section title
[ CA_default ] # default settings for CA
certs = $dir/issuedcerts # dir
to keep issued certificates
new_certs_dir = $dir/newcerts # dir
for new certs
crl_dir = $dir/crl # dir
for issued cert revoc lists
serial = $dir/serial # file
contains the current serial no.
database = $dir/certindex.txt #
certificate database index file
crl = $dir/crl/ca-crl.pem # the
current CRL
certificate = $dir/ca-cert.pem # file
containing CA certificate
private_key = $dir/private/ca-key.pem
# the private key corrosponding
# to
CA certificate
default_days = 3650 #
valid for 10 years
default_md = sha1 # md5
for older software and is weaker
preserve = no #
whether to preserve the order of DN
#
fields to match the order passed in
email_in_dn = no
policy = policy_match #
section to tell which fields in certs
# must
match that of CA, or are mandetory
x509_extensions = usr_cert #
directives for CA when signing a cert
# Make new requests easier to sign - allow two
subjects with same name
# (Or revoke the old certificate first.)
unique_subject = no
# Comment out the following two lines for the
"traditional"
# (and highly broken) format.
nameopt = default_ca
certopt = default_ca
[ policy_match ] # OIDs that
must be same as that of CA
countryName = match
stateOrProvinceName = match
organizationName = match
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
# For the 'anything' policy
# At this point in time, you must list all acceptable
'object'
# types. All values are system default.
[ policy_anything ] # all possible options for
policy...
countryName = optional
stateOrProvinceName = optional
localityName = optional # this is not
in policy_match section
organizationName = optional
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
#######################################
# the req section is used by openssl req command, it
creates and process
# certificate requests in PKCS#10 format. also creates
self signed certs
# for use as root CA.
[ req ] # directives to process and
create cert requests
default_bits = 2048 # key
size for new cert request
default_keyfile = privkey.pem # def
key name for any newely generated cert
default_md = sha1 #
message digest algorithm default was md5
prompt = no
string_mask = nombstr #
permitted characters
distinguished_name = req_distinguished_name
# suggest was root_ca__distinguished_name
attributes = req_attributes #
section used when generating cert
x509_extensions = v3_ca #
section ext to add to generated certs
req_extensions = v3_req # [non CA]
Used when requesting certs,
# adds more
extnsions to cert request
###########
# below section not used right now
#[ root_ca_distinguished_name ]
#commonName = FistOfIron MO
#countryName = US
#stateOrProvinceName = Atlantai
#localityName = St.Louis
#0.organizationName = fistofiron.org
#emailAddress = [EMAIL PROTECTED]
#####################
[ req_distinguished_name ] # options needed to
generate a certificate
# Variable name Prompt string
#-------------------------
----------------------------------
countryName = Country Name (2 letter code)
countryName_min = 2
countryName_max = 2
stateOrProvinceName = State or Province Name (full
name)
localityName = Locality Name (city,
district)
0.organizationName = Organization Name (company)
organizationalUnitName = Organizational Unit Name
(department, division)
commonName = Common Name (FQDN, hostname,
IP, or your name)
commonName_max = 64
emailAddress = Email Address
emailAddress_max = 64 #original cnf
file from install had 64/sample had 40
# default values for above
countryName_default = US
stateOrProvinceName_default = Atlanta
localityName_default = GC, GA
0.organizationName_default = Fist of Iron
organizationalUnitName_default = testpersonalmail
# we can do this but it is not needed normally :-)
#1.organizationName = Second Organization
Name (eg, company)
#1.organizationName_default = CryptSoft Pty Ltd
[ usr_cert ] # options used by CA to sign
other certs
# These extensions are added when 'ca' signs a
request.
# This goes against PKIX guidelines but some CAs do it
and some software
# requires this to avoid interpreting an end user
certificate as a CA.
basicConstraints=CA:FALSE # false meaning this
cert cannot be used as CA cert
# to sign other certs,
for e.g.
# PKIX recommendations harmless if included in all
certificates.
subjectKeyIdentifier=hash # specifies how to
identify the key being certified/signed
authorityKeyIdentifier=keyid,issuer:always # how
to identify the pub key used to verfy sign
# on
this (user) key
nsComment = OpenSSL_from_
nsCaRevocationUrl =
https://www.COMPANYNAME.com/ca-crl.pem # revoc url for
the root CA cert
#nsBaseUrl
#nsRevocationUrl
#nsRenewalUrl
#nsCaPolicyUrl
#nsSslServerName
[ v3_ca ] # options used for creating CA
cert
# Extensions for a typical CA
# PKIX recommendation.
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer:always
# This is what PKIX recommends but some broken
software chokes on critical
# extensions.
#basicConstraints = critical,CA:true
# So we do this instead.
basicConstraints = CA:TRUE
# commented out defaults...
#keyUsage = cRLSign,keyCertSign #although
typical for a CA
#nsCertType = sslCA,emailCA
#subjectAltName = email:copy #even though
recommanded by PKIX
#issuerAltName = issuer:copy #even though
recommanded by PKIX
#obj = DER:02:03 #experts only.
introduces an ext in Hex with DER
[ v3_req ] # options used for adding a
certificate request.
basicConstraints = CA:FALSE # meaning this
cert is not for doing CA job
subjectKeyIdentifier = hash # how to
identify this cert
[ req_attributes ]
challengePassword = A challenge password
# displays this text
challengePassword_min = 4
# min length allowed
challengePassword_max = 20
# max length allowed
unstructuredName = optional company
name # displays this text
[ x509v3_extensions ] # these are used to
sign or request certs
nsCaRevocationUrl =
http://www.fistofiron.com/ca-crl.pem
nsComment = "Fist of Iron owns
its own CA and signs its own certs"
# under ASN.1, the 0 bit would be encoded as 80
nsCertType = 0x40
#nsBaseUrl
#nsRevocationUrl
#nsRenewalUrl
#nsCaPolicyUrl
#nsSslServerName
#nsCertSequence
#nsCertExt
#nsDataType
$
Please advice what is going wrong?
Thank you.
-BG
________________________________
~~Kalyan-mastu~~