OpenSSL:最好的SSL TLS加密庫(kù)
OpenSSL項(xiàng)目的目的是通過(guò)開(kāi)源合作精神開(kāi)發(fā)一種健壯的、可以和同類(lèi)型商業(yè)程序媲美的、全功能的,且開(kāi)源的應(yīng)用于SSL v2/v3(Secure Sockets Layer)和TLS v1(Transport Layer Security)協(xié)議的普遍適用的加密庫(kù)工具集。本項(xiàng)目由世界范圍內(nèi)的志愿者們維護(hù),他們通過(guò)互聯(lián)網(wǎng)聯(lián)絡(luò)、計(jì)劃和開(kāi)發(fā)OpenSSL工具集及其相關(guān)文檔。
下載鏈接:http://down.51cto.com/data/155531
>>去網(wǎng)絡(luò)安全工具百寶箱看看其它安全工具
系統(tǒng)需求
OpenSSL可以在多種操作系統(tǒng)上安裝,但是本文只討論在Linux或BSD系統(tǒng)上的安裝。
安裝OpenSSL的系統(tǒng)需求很低,只要有 ANSI C 編譯器(推薦GCC)、Perl 5 、make 即可。但是OpenSSL的測(cè)試程序依賴(lài)于GNU BC,如果你需要運(yùn)行測(cè)試程序的話,就要事先安裝好它。
編譯選項(xiàng)
將下載回來(lái)的壓縮包解壓,進(jìn)入解壓后的目錄,即可使用 config 或 Configure 腳本進(jìn)行配置。OpenSSL的配置腳本與大多數(shù)典型的軟件包不同,它有自己的一套規(guī)則。詳細(xì)的安裝信息位于源碼樹(shù)下的 INSTALL Configure(特別是"PROCESS_ARGS"段) Makefile.shared Makefile.org 文件中。安裝后的使用與配置信息位于 doc 目錄中, FAQ 文件也可以提供一些參考。
config 腳本檢查系統(tǒng)環(huán)境并調(diào)用 Configure 完成配置,因此配置選項(xiàng)是通過(guò) config 腳本向 Configure 傳遞的。事實(shí)上 config 腳本的作用相當(dāng)于 config.guess ,所以如果你想直接調(diào)用 Configure 的話就一定要正確指定"操作系統(tǒng)-目標(biāo)平臺(tái)"(筆者推薦這個(gè)用法)。所有可用的目標(biāo)機(jī)器列表可以使用"./Configure LIST"命令獲取。Configure 腳本除了根據(jù) Makefile.org 生成 Makefile 之外,還在 crypto/opensslconf.h 中定義了許多宏(基于 crypto/opensslconf.h.in)。
在 config 或 Configure 命令行上可以使用許多選項(xiàng),大體上可以分為3類(lèi)。
全局選項(xiàng)
第一類(lèi)是全局性選項(xiàng):
--openssldir=OPENSSLDIR
安裝目錄,默認(rèn)是 /usr/local/ssl 。
--prefix=PREFIX
設(shè)置 lib include bin 目錄的前綴,默認(rèn)為 OPENSSLDIR 目錄。
--install_prefix=DESTDIR
設(shè)置安裝時(shí)以此目錄作為"根"目錄,通常用于打包,默認(rèn)為空。
zlib
zlib-dynamic
no-zlib
使用靜態(tài)的zlib壓縮庫(kù)、使用動(dòng)態(tài)的zlib壓縮庫(kù)、不使用zlib壓縮功能。
threads
no-threads
是否編譯支持多線程的庫(kù)。默認(rèn)支持。
shared
no-shared
是否生成動(dòng)態(tài)連接庫(kù)。
asm
no-asm
是否在編譯過(guò)程中使用匯編代碼加快編譯過(guò)程。
enable-sse2
no-sse2
啟用/禁用SSE2指令集加速。如果你的CPU支持SSE2指令集,就可以打開(kāi),否則就要關(guān)閉。
gmp
no-gmp
啟用/禁用GMP庫(kù)
rfc3779
no-rfc3779
啟用/禁用實(shí)現(xiàn)X509v3證書(shū)的IP地址擴(kuò)展
krb5
no-krb5
啟用/禁用 Kerberos 5 支持
ssl
no-ssl
ssl2
ssl3
no-ssl2
no-ssl3
tls
no-tls
啟用/禁用 SSL(包含了SSL2/SSL3) TLS 協(xié)議支持。
dso
no-dso
啟用/禁用調(diào)用其它動(dòng)態(tài)鏈接庫(kù)的功能。[提示]no-dso僅在no-shared的前提下可用。
[提示]為了安裝Apache的mod_ssl成功,SSLv2/SSLv3/TLS都必須開(kāi)啟。
算法選項(xiàng)
第二類(lèi)用于禁用crypto目錄下相應(yīng)的子目錄(主要是各種算法)。雖然理論上這些子目錄都可以通過(guò)"no-*"語(yǔ)法禁用,但是實(shí)際上,為了能夠最小安裝libcrypto,libssl,openssl,其中的大部分目錄都必須保留,實(shí)際可選的目錄僅有如下這些:
no-md2,no-md4,no-mdc2,no-ripemd
這些都是摘要算法,含義一目了然。
no-des,no-rc2,no-rc4,no-rc5,no-idea,no-bf,no-cast,no-camellia
這些都是對(duì)稱(chēng)加密算法,含義一目了然。"bf"是"Blowfish"的意思。
no-ec,no-dsa,no-ecdsa,no-dh,no-ecdh
這些都是不對(duì)稱(chēng)加密算法,含義一目了然。
no-comp
數(shù)據(jù)壓縮算法。因?yàn)槟壳皩?shí)際上并沒(méi)有壓縮算法,所以只是定義了一些空接口。
no-store
對(duì)象存儲(chǔ)功能。更多細(xì)節(jié)可以查看 crypto/store/README 文件。
[提示]OpenSSH 只依賴(lài)于該軟件包的加密庫(kù)(libcrypto),而帶有 HTTPS 支持的 Apache 則依賴(lài)于該軟件包的加密庫(kù)和 SSL/TLS 庫(kù)(libssl)。因此,如果你不打算使用 HTTPS 的話,可以只安裝加密庫(kù)(no-ssl no-tls);更多介紹可以查看 README 文件的"OVERVIEW"部分。事實(shí)上,為了能夠讓OpenSSH安裝成功,ripemd,des,rc4,bf,cast,dsa,dh目錄不能被禁止。
編譯器選項(xiàng)
第三類(lèi)是編譯器選項(xiàng)。大多數(shù)軟件包都是通過(guò)在運(yùn)行 configure 腳本的時(shí)候定義 CPPFLAGS CFLAGS LDFLAGS 環(huán)境變量來(lái)設(shè)置編譯選項(xiàng)的,但是OpenSSL卻不是這樣。OpenSSL的 Configure 腳本允許你在命令行上直接輸入 CPPFLAGS CFLAGS 的內(nèi)容。比如:-DDEVRANDOM='"/dev/urandom"' 可以用來(lái)指定隨機(jī)設(shè)備, -DSSL_FORBID_ENULL 則可以用于禁止使用NULL加密算法。`echo $CFLAGS` 則可以將 CFLAGS 變量添加上來(lái)。另一方面,LDFLAGS卻是無(wú)法通過(guò)Configure進(jìn)行設(shè)置的。因?yàn)镃onfigure會(huì)強(qiáng)制清空Makefile中的LDFLAGS,所以在運(yùn)行完Configure之后,可以使用一個(gè)sed修改所有Makefile中的 LDFLAGS(用于連接openssl)和SHARED_LDFLAGS(用于連接libcrypto,libssl庫(kù))。
比如筆者就經(jīng)常這樣使用 Configure 進(jìn)行配置:
./Configure ... -DSSL_FORBID_ENULL -DDEVRANDOM='"/dev/urandom"' `echo $CFLAGS`
find . -name "Makefile*" -exec sed -r -i -e"s|^(SHARED_)?LDFLAGS=|& $LDFLAGS |" {} \;
[提示]不能省略find命令內(nèi)"Makefile*"兩邊的引號(hào)。
編譯、測(cè)試、安裝
配置完畢后,需要使用 make depend 重新建立依賴(lài)關(guān)系,特別是你使用了"no-*"選項(xiàng)之后,否則編譯可能會(huì)失敗。
然后使用 make 命令編譯。如果編譯成功,那么最好使用 make test 進(jìn)行一下測(cè)試。
如果測(cè)試也通過(guò)了,那么接下來(lái)就是安裝了。安裝很簡(jiǎn)單,一條 make install 命令即可。你還可以使用 make install INSTALL_PREFIX=/other/dir 來(lái)將 /other/dir 當(dāng)作"根"進(jìn)行安裝,這通常用于打包。
配置文件
安裝完畢之后,接下來(lái)就是配置。OpenSSL的配置文件是 openssl.cnf ,位于 --openssldir 指定的目錄下。
在實(shí)踐中,OpenSSL 的一個(gè)重要用途就是證書(shū)簽發(fā)和管理,這需要配置文件的配合。如果你只是使用它的加密庫(kù),而不使用證書(shū)功能的話,就不需要了解如何配置OpenSSL 。
下面是一個(gè)簡(jiǎn)單的 openssl.cnf 文件,已經(jīng)可以用于證書(shū)簽發(fā)了。當(dāng)然,這份配置用來(lái)自己玩玩還行,指望用這個(gè)去做真正的"Big Brother",沒(méi)人會(huì)信你 :)
- ########################
- # 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
#p#
- ############################################################################################################
- ####################
- ## 證書(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 = nombstr
- # 如果設(shè)為yes,那么不管是命令行還是配置文件中的字符串都將按照UTF-8編碼看待。默認(rèn)值no表示僅使用ASCII編碼。
- utf8 = no
- # 如果設(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)站的全限定域名
- ##### 證書(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
- # issuerissuerAltName = 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
#p#
- ############################################################################################################
- ####################
- ## 證書(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_extcrl_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
- # issuerissuerAltName=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.
- # issuerissuerAltName=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
- # issuerissuerAltName=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