[转]OpenSSL的配置文件

来源:http://blog.sina.com.cn/s/blog_4fd50c390101890e.html

许多OpenSSL命令(例如,req和ca)带有一个-config参数用于指定openssl配置文件的位置.
本节提供配置文件格式的简短描述和它怎么应用于req和ca命令.本节结尾列出了一个配置文件的例子.

openssl.cnf配置文件由许多节(section)组成,这些节指定了一系列由openssl命令使用的默认值.

[req] 变量
req节包含下列设置:

default_bits=1024
default_keyfile=privkey.pem
distinguished_name=req_distingguished_name  # section name
attributes=req_attributes                   # section name

default_bits       : 是你希望使用的RSA key的默认长度,其它的可能值是512,2048和4096
default_keyfile    : 由req建立的私钥文件的默认文件名.
distinguished_name : 也是配置文件中的节,这个节为distinguished name域各组件定义默认值.req_attributes
变量指定配置文件中定义证书请求属性的默认值的节.

[ca] 变量
你可以配置openssl.cnf来支持许多为签名CSR文件而有着不同策略(policy)的CA.
-name参数来指定要使用哪个CA节.例如:

 openssl ca -name MyCa ...

这个命令引用CA的节[MyCa], 如果-name没被提供给ca命令,那就使用default_ca变量指定的节.
可以有多个不同的CA,但只能有一个是默认的CA。

可能的[ca]变量包含如下内容:
dir: CA数据库的位置.
  数据库是指一个简单的文本数据库,里面包含由tab分隔的字段:
  status        : 'R' - revoked(撤销的), 'E' - expired(过期的), 'V' - 有效
  issued date   : 发证日期
  revoked date  : 撤销日期,如果没被撤销,空
  serial number : 序号
  certificate   : 证书存放位置
  CN            : 证书的文件名

  serial字段应当是唯当像CN/status组合一样是唯一的,ca程序在启动时检测这些值.

certs: 所有以前发布的证书保存的地方.

[policy] 变量
如果ca命令的-policy参数没被提供,policy变量指定默认的policy节.
CA策略节表示在证书在被CA签发前,证书请求的内容必须被满足的必要条件.
例子定义了两个policy: policy_match和policy_anything.

看一下如下值:
countryName=match
这意味着country name必须匹配CA证书。

organisationalUnitName=optional
这表示organistationalUnitName是可选的.

commonName=supplied
这表示commonName在证书请求中必须提供


例子openssl.cnf文件的policy_match节指定了在生成的证书中属性的顺序,如下:
countryName
stateOrProvinceName
organizationName
organizationalUnitName
commonName
emailAddress



Example openssl.cnf File

    ################################################################ 
    # openssl example configuration file. 
    # This is mostly used for generation of certificate requests. 
    ################################################################# 
    [ ca ] 
    default_ca= CA_default          # The default ca section 
    ################################################################# 
     
    [ CA_default ] 
     
    dir=/opt/iona/OrbixSSL1.0c/certs # Where everything is kept 
    certs=$dir                       # Where the issued certs are kept 
    crl_dir= $dir/crl                # Where the issued crl are kept 
    database= $dir/index.txt         # database index file 
    new_certs_dir= $dir/new_certs    # default place for new certs 
    certificate=$dir/CA/OrbixCA      # The CA certificate 
    serial= $dir/serial              # The current serial number 
    crl= $dir/crl.pem                # The current CRL 
    private_key= $dir/CA/OrbixCA.pk  # The private key 
    RANDFILE= $dir/.rand             # private random number file 
    default_days= 365                # how long to certify for 
    default_crl_days= 30             # how long before next CRL 
    default_md= md5                  # which message digest to use 
    preserve= no                     # keep passed DN ordering 
     
    # A few different ways of specifying how closely the request should 
    # conform to the details of the CA 
     
    policy= policy_match            # For the CA policy 
    
    [ policy_match ]  
    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 
     
    [ policy_anything ] 
    countryName = optional 
    stateOrProvinceName= optional 
    localityName= optional 
    organizationName = optional 
    organizationalUnitName = optional 
    commonName= supplied 
    emailAddress= optional 
     
    [ req ] 
    default_bits = 1024 
    default_keyfile= privkey.pem 
    distinguished_name = req_distinguished_name 
    attributes = req_attributes 
     
    [ req_distinguished_name ] 
    countryName= Country Name (2 letter code) 
    countryName_min= 2 
    countryName_max = 2 
    stateOrProvinceName= State or Province Name (full name) 
    localityName = Locality Name (eg, city) 
    organizationName = Organization Name (eg, company) 
    organizationalUnitName  = Organizational Unit Name (eg, section) 
    commonName = Common Name (eg. YOUR name) 
    commonName_max = 64 
    emailAddress = Email Address 
    emailAddress_max = 40 
     
    [ req_attributes ] 
    challengePassword = A challenge password 
    challengePassword_min = 4 
    challengePassword_max = 20 
    unstructuredName= An optional company name 

posted @ 2014-09-29 00:40  jesselk  阅读(2259)  评论(0编辑  收藏  举报