最近需要搭一個(gè)測(cè)試服務(wù)器盒刚,然后安卓9.0是禁止http訪(fǎng)問(wèn)請(qǐng)求的,只允許https彩届,所以這里我嘗試使用https進(jìn)行開(kāi)發(fā)伪冰,首先必要的就是測(cè)試服務(wù)器使用https(本機(jī))
一:openssl的安裝
HTTPS網(wǎng)站所用的證書(shū)可向可信CA機(jī)構(gòu)申請(qǐng),不過(guò)這一類(lèi)基本上都是商業(yè)機(jī)構(gòu)樟蠕,申請(qǐng)證書(shū)需要繳費(fèi)贮聂,一般是按年繳費(fèi)靠柑,費(fèi)用因?yàn)镃A機(jī)構(gòu)的不同而不同。如果只是APP與后臺(tái)服務(wù)器進(jìn)行HTTPS通信吓懈,可以使用openssl工具生成自簽發(fā)的數(shù)字證書(shū)歼冰,可以節(jié)約費(fèi)用,不過(guò)得妥善保護(hù)好證書(shū)私鑰耻警,不能泄露或者丟失隔嫡。HTTPS通信所用的數(shù)字證書(shū)格式為X.509。
首先我們進(jìn)入下載地址
下載
下載完之后進(jìn)行安裝(網(wǎng)上有教程是使用源代碼進(jìn)行編譯的甘穿,不推薦使用腮恩,需要安裝很多東西,太麻煩了温兼,也太硬核了)
然后需要進(jìn)行日常環(huán)境變量配置
二:生成證書(shū)
打開(kāi)cmd秸滴,輸入openssl查看是否安裝完成。
接下來(lái)以管理員權(quán)限打開(kāi)cmd進(jìn)行操作:
1.創(chuàng)建一個(gè)你將用來(lái)創(chuàng)建證書(shū)的目錄募判,例如我的是 D:\datakey
2.補(bǔ)齊文件和目錄
按照網(wǎng)上大部分教程來(lái)做會(huì)報(bào)找不到文件的錯(cuò)荡含,這時(shí)候我們需要補(bǔ)齊以下文件:
先創(chuàng)建demoCA文件夾
- 寫(xiě)openssl.conf配置文件 (這里和demoCA同目錄)
然后demoCA文件夾下包含以下內(nèi)容:
- index.txt OpenSSL在創(chuàng)建自簽證書(shū)時(shí)會(huì)向該文件里寫(xiě)下索引
- database.txt OpenSSL會(huì)模擬數(shù)據(jù)庫(kù)將一些敏感信息寫(xiě)在該文件里
- serial 創(chuàng)建該文件后,請(qǐng)編輯在第一行寫(xiě)下 01 (注意届垫,沒(méi)有后綴)
-
newcerts 文件夾
注意: 這里提到的所有文件必須補(bǔ)齊释液,并且文件名不得更改 !
再注:在windows装处,沒(méi)有openssl.conf默認(rèn)文件夾的位置误债,所以需要自己配置環(huán)境變量。
3.PNG
文件夾.PNG
然后進(jìn)入我們下一步:
3.生成自己的CA根證書(shū)
生成 CA 根證書(shū)符衔,做簽名使用找前!
輸入 :
無(wú)密碼:
openssl genrsa -out ca.key 2048
有密碼:
openssl genrsa -des3 -out ca.key 2048
Tips:
- genrsa 表示采用RSA算法生成根證書(shū)私鑰
- des3 表示使用3DES給根證書(shū)私鑰加密
- 2048 表示根證書(shū)私鑰的長(zhǎng)度,建議使用2048判族,越長(zhǎng)越安全(有些教程使用1024)
然后就會(huì)生產(chǎn)ca.key在文件夾下躺盛。
再根據(jù)這個(gè)生成根證書(shū)簽名請(qǐng)求文件(ca.csr)
如果你的根證書(shū)需要?jiǎng)e的簽名機(jī)構(gòu)來(lái)簽名,你就拿這個(gè)簽名請(qǐng)求文件給他形帮,讓他們幫你簽名槽惫,簽名完后,他們會(huì)返回你一個(gè) .crt 的證書(shū)辩撑。
如果是自己使用界斜,搭建著玩或者自己私人的網(wǎng)站,就使用openssl生成就好了:
openssl req -new -key ca.key -out ca.csr
這里會(huì)要求你輸入一些信息:
生成X.509格式的CA根證書(shū)ca_public.crt(公鑰證書(shū)):
openssl x509 -req -in ca.csr -signkey ca.key -out ca_public.crt
4.生成服務(wù)端證書(shū)
先生成服務(wù)器私鑰文件server.key:
openssl genrsa -des3 -out server.key 2048
根據(jù)服務(wù)器私鑰生成服務(wù)器公鑰文件server_public.pem:
openssl rsa -in server.key -pubout -out server_public.pem
服務(wù)器端需要向CA機(jī)構(gòu)申請(qǐng)簽名證書(shū)合冀,在申請(qǐng)簽名證書(shū)之前依然是創(chuàng)建自己的證書(shū)簽名請(qǐng)求文件server.csr:
openssl req -new -key server.key -out server.csr
然后輸入信息各薇。
這里注意,在配置文件表明了
##### 證書(shū)請(qǐng)求信息的匹配策略 #####
# 變量名稱(chēng)是DN域?qū)ο蟮拿Q(chēng),變量值可以是:
# match: 該變量在證書(shū)請(qǐng)求中的值必須與CA證書(shū)相應(yīng)的變量值完全相同峭判,否則拒簽开缎。
# supplied: 該變量在證書(shū)請(qǐng)求中必須提供(值可以不同),否則拒簽林螃。
# optional: 該變量在證書(shū)請(qǐng)求中可以存在也可以不存在(相當(dāng)于沒(méi)有要求)奕删。
# 除非preserve=yes或者在ca命令中使用了-preserveDN,否則在簽發(fā)證書(shū)時(shí)將刪除匹配策略中未提及的對(duì)象疗认。
[ policy_match ]
countryName = match
stateOrProvinceName = match
organizationName = match
commonName = supplied
organizationalUnitName = optional
emailAddress = optional
而且:commonName填寫(xiě)服務(wù)器的地址完残,但是由于我在本地測(cè)試,所以我填的是localhost
服務(wù)器端用server.csr文件向CA申請(qǐng)證書(shū)横漏,簽名過(guò)程需要CA的公鑰證書(shū)和私鑰參與谨设,最終頒發(fā)一個(gè)帶有CA簽名的服務(wù)器端證書(shū)server.crt:
openssl ca -in server.csr -out server.crt -cert ca_public.crt -keyfile ca.key
萬(wàn)事大吉。
附 openssl.conf文件內(nèi)容
這里的內(nèi)容只能拿來(lái)玩玩绊茧,如果拿來(lái)項(xiàng)目開(kāi)發(fā)那就涼涼了(因?yàn)檫@個(gè)我也不懂铝宵,目前是根據(jù)網(wǎng)上找到的文件加上自己的閱讀修改而成)
########################
# OpenSSL 配置文件示范 #
########################
# [注意]這個(gè)示范文件并不是默認(rèn)設(shè)置。
########
# 語(yǔ)法 #
########
#
# 變量 = 值
#
# 語(yǔ)法很簡(jiǎn)單华畏,一看就懂,但是有幾點(diǎn)需要說(shuō)明:
# 1. 字符串值最好使用雙引號(hào)界定尊蚁,并且其中可以使用"\n","\r","\t"這些轉(zhuǎn)義序列("\"怎么表示?)亡笑。
# 2. 可以使用 ${變量名} 的形式引用同一字段中的變量,使用 ${字段名::變量名} 的形式引用其它字段中的變量横朋。
# 3. 可以使用 ${EVP::環(huán)境變量} 的形式引用操作系統(tǒng)中定義的環(huán)境變量仑乌,若變量不存在則會(huì)導(dǎo)致錯(cuò)誤。
# 4. 可以在默認(rèn)字段定義與操作系統(tǒng)環(huán)境變量同名的變量作為默認(rèn)值來(lái)避免環(huán)境變量不存在導(dǎo)致的錯(cuò)誤琴锭。
# 5. 如果在同一字段內(nèi)有多個(gè)相同名稱(chēng)的變量晰甚,那么后面的值將覆蓋前面的值。
#
############
# 默認(rèn)字段 #
############
# 此部分是默認(rèn)字段[配置段]决帖,必須放在所有字段之前厕九。
# 讀取配置文件數(shù)據(jù)時(shí),會(huì)首先根據(jù)字段名稱(chēng)去尋找相應(yīng)的配置段地回,如果沒(méi)有找到則會(huì)使用這里的默認(rèn)字段扁远。
# 定義 HOME 的默認(rèn)值,防止操作系統(tǒng)中不存在 HOME 環(huán)境變量刻像。
HOME = .
# 默認(rèn)的隨機(jī)數(shù)種子文件畅买,建議設(shè)置為 /dev/random 或 /dev/urandom
RANDFILE = $ENV::HOME/.rnd
# 擴(kuò)展對(duì)象定義
# 比如,OpenSSL中并未定義X.509證書(shū)的擴(kuò)展項(xiàng)细睡,在使用到的時(shí)候就會(huì)從下面對(duì)擴(kuò)展對(duì)象的定義中獲取谷羞。
# 定義的方法有兩種,第一種(反對(duì)使用)是存儲(chǔ)在外部文件中溜徙,也就是這里"oid_file"變量定義的文件湃缎。
#oid_file = $ENV::HOME/.oid
# 第二種是存儲(chǔ)在配置文件的一個(gè)字段中犀填,也就是這里"oid_section"變量值所指定的字段。
oid_section = new_oids
[ new_oids ]
# 可以在這里添加擴(kuò)展對(duì)象的定義雁歌,例如可以被'ca'和'req'使用宏浩。
# 格式如下:
# 對(duì)象簡(jiǎn)稱(chēng) = 對(duì)象數(shù)字ID
############################################################################################################
####################
## 證書(shū)請(qǐng)求配置 ##
####################
# 在申請(qǐng)證書(shū)之前通常需要首先生成符合 PKCS#10 標(biāo)準(zhǔn)的證書(shū)請(qǐng)求封裝格式。
# openssl 的 req 指令實(shí)現(xiàn)了產(chǎn)生證書(shū)請(qǐng)求的功能靠瞎,其相關(guān)選項(xiàng)的默認(rèn)值就來(lái)自于這里的設(shè)置比庄。
# 證書(shū)請(qǐng)求的配置分成幾個(gè)字段,包括一個(gè)基本字段和幾個(gè)附屬字段乏盐。
##### 證書(shū)請(qǐng)求配置的"基本字段",其它附屬字段都以它為入口 #####
[ req ]
# 生成的證書(shū)中RSA密鑰對(duì)的默認(rèn)長(zhǎng)度父能,取值是2的整數(shù)次方神凑。建議使用4096以上。
default_bits = 1024
# 保存生成的私鑰文件的默認(rèn)文件名
default_keyfile = privkey.pem
# 生成的私鑰文件是否采用口令加密保護(hù),可以設(shè)為yes或no跪者。
encrypt_key = yes
# 讀取輸入私鑰文件時(shí)的口令仗谆,如果未設(shè)置那么將會(huì)提示輸入。
# input_password = secret
# 保存輸出私鑰文件時(shí)的口令黎棠,如果未設(shè)置那么將會(huì)提示輸入。
# output_password = secret
# 簽名默認(rèn)使用的信息摘要算法,可以使用:md5,sha1,mdc2,md2
default_md = md5
# 為一些字段設(shè)置默認(rèn)的字符串類(lèi)型,比如證書(shū)請(qǐng)求中的城市和組織名稱(chēng)论寨。可能的取值和解釋如下:
# default: 包含了 PrintableString, T61String, BMPString 三種類(lèi)型
# pkix : 包含了 PrintableString, BMPString 兩種類(lèi)型
# utf8only: 只使用 UTF8 字符串爽茴。推薦使用這個(gè)葬凳,這樣可以完美的包含任意字符。
# nombstr : 包含了 PrintableString, T61String 兩種類(lèi)型(不使用 BMPStrings 或 UTF8String 兩種多字節(jié)字符類(lèi)型)
string_mask = utf8only
# 如果設(shè)為yes室奏,那么不管是命令行還是配置文件中的字符串都將按照UTF-8編碼看待火焰。默認(rèn)值no表示僅使用ASCII編碼。
utf8 = yes
# 如果設(shè)為no胧沫,那么 req 指令將直接從配置文件中讀取證書(shū)字段的信息昌简,而不提示用戶(hù)輸入。
prompt = yes
# 定義輸入用戶(hù)信息選項(xiàng)的"特征名稱(chēng)"字段名绒怨,該擴(kuò)展字段定義了多項(xiàng)用戶(hù)信息纯赎。
distinguished_name = req_distinguished_name
# 定義證書(shū)請(qǐng)求屬性的字段名,該擴(kuò)展字段定義了證書(shū)請(qǐng)求的一些屬性南蹂,但openssl的證書(shū)簽發(fā)工具并不使用它們犬金。
attributes = req_attributes
# 證書(shū)請(qǐng)求擴(kuò)展的字段名,該擴(kuò)展字段定義了要加入到證書(shū)請(qǐng)求中的一系列擴(kuò)展項(xiàng)。
# req_extensions = v3_req
# 生成自簽名證書(shū)時(shí)要使用的證書(shū)擴(kuò)展項(xiàng)字段名晚顷,該擴(kuò)展字段定義了要加入到證書(shū)中的一系列擴(kuò)展項(xiàng)峰伙。
x509_extensions = v3_ca
##### "特征名稱(chēng)"字段包含了用戶(hù)的標(biāo)識(shí)信息 #####
[ req_distinguished_name ]
#countryName = CN #只能使用2字母的國(guó)家代碼
#stateOrProvinceName = 省份或直轄市名稱(chēng)
#organizationName = 組織名
#commonName = 網(wǎng)站的全限定域名
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
##### 證書(shū)請(qǐng)求屬性字段定義了證書(shū)請(qǐng)求的一些屬性(都不是必須的) #####
[ req_attributes ]
##### 要加入到證書(shū)請(qǐng)求中的一系列擴(kuò)展項(xiàng) #####
[ v3_req ]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
#### 生成自簽名證書(shū)時(shí)使用的證書(shū)擴(kuò)展項(xiàng) #####
### 因?yàn)檫@部分是非必須的,所以不翻譯了该默,事實(shí)上你完全可以刪除這部分內(nèi)容
[ v3_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
# Key usage: this is typical for a CA certificate. However since it will
# prevent it being used as an test self-signed certificate it is best
# left out by default.
# keyUsage = cRLSign, keyCertSign
# Some might want this also
# nsCertType = sslCA, emailCA
# Include email address in subject alt name: another PKIX recommendation
# subjectAltName = email:copy
# Copy issuer details
# issuerAltName = issuer:copy
# DER hex encoding of an extension: beware experts only!
# obj=DER:02:03
# Where 'obj' is a standard or added object
# You can even override a supported extension:
# basicConstraints = critical, DER:30:03:01:01:FF
############################################################################################################
####################
## 證書(shū)簽發(fā)配置 ##
####################
# openssl 的 ca 指令實(shí)現(xiàn)了證書(shū)簽發(fā)的功能瞳氓,其相關(guān)選項(xiàng)的默認(rèn)值就來(lái)自于這里的設(shè)置。
# 這個(gè)字段只是通過(guò)唯一的default_ca變量來(lái)指定默認(rèn)的CA主配置字段的入口(-name 命令行選項(xiàng)的默認(rèn)值)
[ ca ]
default_ca = CA_default
##### 默認(rèn)的CA主配置字段 #####
[ CA_default ]
# 保存所有信息的文件夾栓袖,這個(gè)變量只是為了給后面的變量使用
dir = ./demoCA
# 存放CA本身根證書(shū)的文件名
certificate = $dir/cacert.pem
# 存放CA自身私鑰的文件名
private_key = $dir/private/cakey.pem
# 簽發(fā)證書(shū)時(shí)使用的序列號(hào)文本文件匣摘,里面必須包含下一個(gè)可用的16進(jìn)制數(shù)字。
serial = $dir/serial
# 存放新簽發(fā)證書(shū)的默認(rèn)目錄叽赊,證書(shū)名就是該證書(shū)的系列號(hào)恋沃,后綴是.pem
new_certs_dir = $dir/newcerts
# 已生成的證書(shū)的默認(rèn)保存目錄
certs = $dir/certs
# 保存已簽發(fā)證書(shū)的文本數(shù)據(jù)庫(kù)文件,初始時(shí)為空必指。
database = $dir/index.txt
# 存放當(dāng)前CRL編號(hào)的文件囊咏,對(duì)于v1版本的CRL則必須注釋掉該行
crlnumber = $dir/crlnumber
# 當(dāng)前CRL文件
crl = $dir/crl.pem
# 生成的證書(shū)撤銷(xiāo)列表(CRL)的默認(rèn)保存目錄
crl_dir = $dir/crl
# 同一個(gè)subject是否只能創(chuàng)建一個(gè)證書(shū),設(shè)為no表示可以創(chuàng)建多個(gè)
unique_subject = yes
# 簽發(fā)新證書(shū)以及CRL時(shí)默認(rèn)的摘要算法塔橡,可以使用:md5,md2,mdc2,sha1
default_md = sha1
# 通常梅割,證書(shū)簽發(fā)的特種名稱(chēng)(DN)域的各個(gè)參數(shù)順序與證書(shū)策略的參數(shù)順序一致。
# 但是葛家,如果這里設(shè)為yes則保持與證書(shū)請(qǐng)求中的參數(shù)順序一致户辞。
preserve = no
# 當(dāng)用戶(hù)需要確認(rèn)簽發(fā)證書(shū)時(shí)顯示可讀證書(shū)DN域的方式●耍可用值與 x509 指令的 -nameopt 選項(xiàng)相同底燎。
name_opt = ca_default
# 當(dāng)用戶(hù)需要確認(rèn)簽發(fā)證書(shū)時(shí)顯示證書(shū)域的方式。
# 可用值與 x509 指令的 -certopt 選項(xiàng)相同弹砚,不過(guò) no_signame 和 no_sigdump 總被默認(rèn)設(shè)置双仍。
cert_opt = ca_default
# 新證書(shū)默認(rèn)的生效日期,如果未設(shè)置則使用簽發(fā)時(shí)的時(shí)間桌吃,格式為:YYMMDDHHNNSSZ(年月日時(shí)分秒Z)
# default_startdate = 080303223344Z
# 新證書(shū)默認(rèn)的失效日期朱沃,格式為:YYMMDDHHNNSSZ(年月日時(shí)分秒Z)
# default_enddate = 090303223344Z
# 新簽發(fā)的證書(shū)默認(rèn)有效期,以天為單位
default_days = 365
# 從當(dāng)前CRL(證書(shū)撤銷(xiāo)列表)到下次CRL發(fā)布的間隔天數(shù)
default_crl_days = 30
# 是否將證書(shū)請(qǐng)求中的擴(kuò)展項(xiàng)信息加入到證書(shū)擴(kuò)展項(xiàng)中去茅诱。取值范圍以及解釋?zhuān)?# none: 忽略所有證書(shū)請(qǐng)求中的擴(kuò)展項(xiàng)
# copy: 將證書(shū)擴(kuò)展項(xiàng)中沒(méi)有的項(xiàng)目復(fù)制到證書(shū)中
# copyall: 將所有證書(shū)請(qǐng)求中的擴(kuò)展項(xiàng)都復(fù)制過(guò)去逗物,并且覆蓋證書(shū)擴(kuò)展項(xiàng)中原來(lái)已經(jīng)存在的值。
copy_extensions = none
# 定義用于證書(shū)請(qǐng)求DN域匹配策略的字段瑟俭,用于決定CA要求和處理證書(shū)請(qǐng)求提供的DN域的各個(gè)參數(shù)值的規(guī)則翎卓。
policy = policy_match
# 定義X.509證書(shū)擴(kuò)展項(xiàng)的字段。如果沒(méi)有提供這個(gè)字段則生成X.509v1而不是v3格式的證書(shū)尔当。
x509_extensions = usr_cert
# 定義生成CRL時(shí)需要加入的擴(kuò)展項(xiàng)字段莲祸。如果沒(méi)有定義則生成v1而不是v2版本的CRL蹂安。
# crl_extensions = crl_ext
##### 證書(shū)請(qǐng)求信息的匹配策略 #####
# 變量名稱(chēng)是DN域?qū)ο蟮拿Q(chēng),變量值可以是:
# match: 該變量在證書(shū)請(qǐng)求中的值必須與CA證書(shū)相應(yīng)的變量值完全相同锐帜,否則拒簽田盈。
# supplied: 該變量在證書(shū)請(qǐng)求中必須提供(值可以不同),否則拒簽缴阎。
# optional: 該變量在證書(shū)請(qǐng)求中可以存在也可以不存在(相當(dāng)于沒(méi)有要求)允瞧。
# 除非preserve=yes或者在ca命令中使用了-preserveDN,否則在簽發(fā)證書(shū)時(shí)將刪除匹配策略中未提及的對(duì)象蛮拔。
[ policy_match ]
countryName = match
stateOrProvinceName = match
organizationName = match
commonName = supplied
organizationalUnitName = optional
emailAddress = optional
### 下面的部分由于都是非必須的部分述暂,因此也不翻譯了。
### 事實(shí)上你完全可以從配置文件中刪除這些內(nèi)容
[ usr_cert ]
# 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
# Here are some examples of the usage of nsCertType. If it is omitted
# the certificate can be used for anything *except* object signing.
# This is OK for an SSL server.
# nsCertType = server
# For an object signing certificate this would be used.
# nsCertType = objsign
# For normal client use this is typical
# nsCertType = client, email
# and for everything including object signing:
# nsCertType = client, email, objsign
# This is typical in keyUsage for a client certificate.
# keyUsage = nonRepudiation, digitalSignature, keyEncipherment
# This will be displayed in Netscape's comment listbox.
nsComment = "OpenSSL Generated Certificate"
# PKIX recommendations harmless if included in all certificates.
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer
# This stuff is for subjectAltName and issuerAltname.
# Import the email address.
# subjectAltName=email:copy
# An alternative to produce certificates that aren't
# deprecated according to PKIX.
# subjectAltName=email:move
# Copy subject details
# issuerAltName=issuer:copy
#nsCaRevocationUrl = http://www.domain.dom/ca-crl.pem
#nsBaseUrl
#nsRevocationUrl
#nsRenewalUrl
#nsCaPolicyUrl
#nsSslServerName
[ crl_ext ]
# CRL extensions.
# Only issuerAltName and authorityKeyIdentifier make any sense in a CRL.
# issuerAltName=issuer:copy
authorityKeyIdentifier=keyid:always,issuer:always
[ proxy_cert_ext ]
# These extensions should be added when creating a proxy certificate
# 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
# Here are some examples of the usage of nsCertType. If it is omitted
# the certificate can be used for anything *except* object signing.
# This is OK for an SSL server.
# nsCertType = server
# For an object signing certificate this would be used.
# nsCertType = objsign
# For normal client use this is typical
# nsCertType = client, email
# and for everything including object signing:
# nsCertType = client, email, objsign
# This is typical in keyUsage for a client certificate.
# keyUsage = nonRepudiation, digitalSignature, keyEncipherment
# This will be displayed in Netscape's comment listbox.
nsComment = "OpenSSL Generated Certificate"
# PKIX recommendations harmless if included in all certificates.
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer:always
# This stuff is for subjectAltName and issuerAltname.
# Import the email address.
# subjectAltName=email:copy
# An alternative to produce certificates that aren't
# deprecated according to PKIX.
# subjectAltName=email:move
# Copy subject details
# issuerAltName=issuer:copy
#nsCaRevocationUrl = http://www.domain.dom/ca-crl.pem
#nsBaseUrl
#nsRevocationUrl
#nsRenewalUrl
#nsCaPolicyUrl
#nsSslServerName
# This really needs to be in place for it to be a proxy certificate.
proxyCertInfo=critical,language:id-ppl-anyLanguage,pathlen:3,policy:foo