此模块为ApacheHTTPServer提供SSLv3和TLSv1.x支持。SSLv2不再受支持。
这个模块依靠OpenSSL来提供密码引擎。
SSL文档中提供了更多细节,讨论和示例。
可以将此模块配置为向SSI和CGI命名空间提供多项SSL信息作为附加环境变量。由于性能原因,此信息不是默认提供的。(请参阅SSLOptions下面的StdEnvVars。)生成的变量在下表中列出。为了向后兼容,信息也可以以不同的名字提供。有关兼容性变量的详细信息,请参阅兼容性一章。
x509指定X.509DN的组件;其中之一C,ST,L,O,OU,CN,T,I,G,S,D,UID,Email。在Apache2.1及更高版本中,x509还可能包含数字_n后缀。如果所讨论的DN包含多个具有相同名称的属性,则将该后缀用作从零开始的索引来选择特定属性。例如,服务器证书主题DN包含两个OU属性,SSL_SERVER_S_DN_OU_0并可SSL_SERVER_S_DN_OU_1用于引用每个属性。没有_n后缀的变量名相当于带有_0后缀的名字;第一个(或唯一的)属性。当使用指令StdEnvVars选项填充环境表时SSLOptions,任何DN的第一个(或唯一)属性仅在非后缀名称下添加;即没有_0添加后缀条目。
ApacheHTTPD2.3.11中*_DN变量的格式已经改变。有关详细信息,请参阅LegacyDNStringFormat选项SSLOptions。
SSL_CLIENT_V_REMAIN仅在版本2.1和更高版本中可用。
还可以在SSLRequire表达式或自定义日志格式中使用许多其他环境变量:
HTTP_USER_AGENTPATH_INFOAUTH_TYPEHTTP_REFERERQUERY_STRINGSERVER_SOFTWAREHTTP_COOKIEREMOTE_HOSTAPI_VERSIONHTTP_FORWARDEDREMOTE_IDENTTIME_YEARHTTP_HOSTIS_SUBREQTIME_MONHTTP_PROXY_CONNECTIONDOCUMENT_ROOTTIME_DAYHTTP_ACCEPTSERVER_ADMINTIME_HOURTHE_REQUESTSERVER_NAMETIME_MINREQUEST_FILENAMESERVER_PORTTIME_SECREQUEST_METHODSERVER_PROTOCOLTIME_WDAYREQUEST_SCHEMEREMOTE_ADDRTIMEREQUEST_URIREMOTE_USER在这些情况下,还可以使用两种特殊格式:
为了向后兼容,还提供了特殊的“%{名称}c”加密格式功能。有关此功能的信息在“兼容性”一章中提供。
CustomLog“logs/ssl_request_log”“%t%h%{SSL_PROTOCOL}x%{SSL_CIPHER}x\”%r\“%b”这些格式甚至可以在不设置指令StdEnvVars选项的情况下工作SSLOptions。
mod_ssl设置可用于记录格式字符串的请求的“注释”。%{name}nmod_log_config
支持的说明如下:
头文件集X-SSL-PROTOCOL“expr=%{SSL_PROTOCOL}”头文件集X-SSL-CIPHER“expr=%{SSL:SSL_CIPHER}”该功能甚至可以在不设置指令StdEnvVars选项的情况下工作SSLOptions。
mod_ssl提供与使用的几个认证供应商mod_authz_core的Require指令。
该ssl供应商拒绝访问,如果一个连接没有使用SSL加密。这与SSLRequireSSL指令类似。
要求ssl要求ssl-verify-client该ssl供应商允许访问,如果用户与有效客户证书进行认证。这只有SSLVerifyClientoptional在有效时才有用。
如果用户使用客户端证书或用户名和密码进行身份验证,则以下示例将授予访问权限。
这个目录中的文件必须是PEM编码的,并通过哈希文件名来访问。所以通常你不能把证书文件放在那里:你还必须创建名为散列值的符号链接.N。你应该确保这个目录包含适当的符号链接。
若既没有指令SSLCADNRequestPath或SSLCADNRequestFile给出,那么该组发送到客户端上可接受的CA的名称是由给定的所有的CA证书的名称SSLCACertificateFile和SSLCACertificatePath指示;换句话说,实际上将用于验证客户端证书的CA的名称。
在某些情况下,能够发送一组可接受的CA名称是有用的,这些名称与用于验证客户端证书的实际CA不同,例如,客户端证书是否由中间CA签名。在这种情况下,SSLCADNRequestPath和/或SSLCADNRequestFile可以使用;那么可接受的CA名称将从这对指令所指定的目录和/或文件中的全套证书中取得。
SSLCADNRequestFile必须指定一个包含PEM编码CA证书串联的一体化文件。
可用的标志是:
这个目录中的文件必须是PEM编码的,并通过哈希文件名来访问。所以通常你不仅要把CRL文件放在那里。另外,您必须创建名为哈希值的符号链接.rN。你应该确保这个目录包含适当的符号链接。
该指令设置可选的一体化文件,您可以在其中组装证书作为服务器证书的证书链的证书颁发机构(CA)的证书。这从服务器证书颁发的CA证书开始,可以扩展到根CA证书。这样的文件就是各种PEM编码的CA证书文件的串联,通常以证书链顺序。
除了SSLCACertificatePath服务器证书之外,这应该替代地和/或另外用于显式地构建发送到浏览器的服务器证书链。使用客户端身份验证时,避免与CA证书发生冲突尤其有用。因为虽然放置服务器证书链的CA证书SSLCACertificatePath对于证书链的构造具有相同的效果,但是也有客户端认证接受同一CA证书颁发的客户端证书的副作用。
但要小心:只有在使用单个基于RSA或DSA的服务器证书时,才能提供证书链。如果您使用的是耦合的RSA+DSA证书对,则仅当实际上两个证书使用相同的证书链时才能使用。否则浏览器会在这种情况下感到困惑。
这些文件还可能包含从叶子到根目录的中间CA证书。版本2.4.8及更高版本支持此功能,并已废弃SSLCertificateChainFile。在使用OpenSSL1.0.2或更高版本运行时,这允许以每个证书为基础配置中间CA链。
自定义DH参数和临时密钥的EC曲线名称也可以添加到使用的第一个文件的末尾SSLCertificateFile。这在版本2.4.7或更高版本中受支持。这样的参数可以使用命令来生成openssldhparam和opensslecparam。参数可以按原样添加到第一个证书文件的末尾。只有第一个文件可以用于自定义参数,因为它们与认证算法类型无关地被应用。
最后,最终实体证书的私钥也可以添加到证书文件中,而不是使用单独的SSLCertificateKeyFile指令。这种做法是非常沮丧的。如果使用该密钥,则使用这种嵌入密钥的证书文件必须在证书之后使用单独的密钥文件进行配置。如果私钥已加密,则在启动时会强制执行密码对话框。
从版本2.4.7开始,mod_ssl使用主要长度为2048,3072和4096位的标准化DH参数,以及从版本2.4.10(RFC3526)开始的附加主体长度6144和8192位,并将它们发送出去到客户端的证书的RSA/DSA密钥的长度。特别是基于Java的客户端(Java7或更早版本),这可能会导致握手失败-请参阅此常见问题解答以解决此类问题。
当使用多个证书来支持不同的认证算法(如RSA,DSA,但主要是ECC)和1.0.2之前的OpenSSL时,建议使用自定义的DH参数(最好是将它们添加到第一个证书文件中)上面),或者命令这些SSLCertificateFile指令使得RSA/DSA证书放在ECC之后。
由于自定义的DH参数总是优先于默认参数,因此可以通过创建和配置它们(如上所述)来避免此问题,因此使用自定义/合适的长度。
该指令可以多次使用(引用不同的文件名)以支持多种算法进行服务器认证。对于每个SSLCertificateKeyFile指令,必须有一个匹配的SSLCertificateFile指令。
私钥也可以与文件中给出的证书结合使用SSLCertificateFile,但是这种做法是非常沮丧的。如果使用该密钥,则使用这种嵌入密钥的证书文件必须在证书之后使用单独的密钥文件进行配置。
AnSSLcipherspecificationincipher-speciscomposedof4majorattributesplusafewextraminorones:
AnSSLciphercanalsobeanexportcipher.SSLv2ciphersarenolongersupported.Tospecifywhichcipherstouse,onecaneitherspecifyalltheCiphers,oneatatime,orusealiasestospecifythepreferenceandorderfortheciphers(seeTable1).Theactuallyavailableciphersandaliasesdependsontheusedopensslversion.Neweropensslversionsmayincludeadditionalciphers.
Nowwherethisbecomesinterestingisthatthesecanbeputtogethertospecifytheorderandciphersyouwishtouse.Tospeedthisuptherearealsoaliases(SSLv3,TLSv1,EXP,LOW,MEDIUM,HIGH)forcertaingroupsofciphers.Thesetagscanbejoinedtogetherwithprefixestoformthecipher-spec.Availableprefixesare:
Beginningwithversion2.4.7,nullandexport-gradeciphersarealwaysdisabled,asmod_sslunconditionallyadds!aNULL:!eNULL:!EXPtoanycipherstringatinitialization.
启用压缩会导致大多数安装问题(所谓的CRIME攻击)。
该指令允许使用加密硬件加速器板来卸载一些SSL处理开销。这个指令只有在SSL工具箱是用“引擎”支持构建时才能使用;OpenSSL0.9.7和更高版本默认具有“引擎”支持,必须使用OpenSSL0.9.6的单独版本“-engine”。
要发现支持哪些引擎名称,请运行命令“opensslengine”。
ThisdirectivetogglestheusageoftheSSLlibraryFIPS_modeflag.Itmustbesetintheglobalservercontextandcannotbeconfiguredwithconflictingsettings(SSLFIPSonfollowedbySSLFIPSofforsimilar).ThemodeappliestoallSSLlibraryoperations.
Ifmod_sslislinkedagainstOpenSSLversion0.9.8morlater,bydefaultrenegotiationisonlysupportedwithclientssupportingthenewprotocolextension.Ifthisdirectiveisenabled,renegotiationwillbeallowedwithold(unpatched)clients,albeitinsecurely.
Ifthisdirectiveisenabled,SSLconnectionswillbevulnerabletotheMan-in-the-MiddleprefixattackasdescribedinCVE-2009-3555.
SSLInsecureRenegotiationonTheSSL_SECURE_RENEGenvironmentvariablecanbeusedfromanSSIorCGIscripttodeterminewhethersecurerenegotiationissupportedforagivenSSLconnection.
ThisoptionsetsthedefaultOCSPrespondertouse.IfSSLOCSPOverrideResponderisnotenabled,theURIgivenwillbeusedonlyifnoresponderURIisspecifiedinthecertificatebeingverified.
TheOCSPresponderusediseitherextractedfromthecertificateitself,orderivedbyconfiguration;seetheSSLOCSPDefaultResponderandSSLOCSPOverrideResponderdirectives.
ThisoptionforcestheconfigureddefaultOCSPrespondertobeusedduringOCSPcertificatevalidation,regardlessofwhetherthecertificatebeingvalidatedreferencesanOCSPresponder.
ThisoptionallowstosettheURLofaHTTPproxythatshouldbeusedforallqueriestoOCSPresponders.
ThissuppliesalistoftrustedOCSPrespondercertificatestobeusedduringOCSPrespondercertificatevalidation.Thesuppliedcertificatesareimplicitlytrustedwithoutanyfurthervalidation.ThisistypicallyusedwheretheOCSPrespondercertificateisselfsignedoromittedfromtheOCSPresponse.
ThisoptionsetsthetimeoutforqueriestoOCSPresponders,whenSSLOCSPEnableisturnedon.
Thisoptionsetsthemaximumallowableage("freshness")forOCSPresponses.Thedefaultvalue(-1)doesnotenforceamaximumage,whichmeansthatOCSPresponsesareconsideredvalidaslongastheirnextUpdatefieldisinthefuture.
ThisoptionsetsthemaximumallowabletimeskewforOCSPresponses(whencheckingtheirthisUpdateandnextUpdatefields).
ThesetofavailableSSLOpenSSLConfCmdcommandsdependsontheOpenSSLversionbeingusedformod_ssl(atleastversion1.0.2isrequired).Foralistofsupportedcommandnames,seethesectionSupportedconfigurationfilecommandsintheSSL_CONF_cmd(3)manualpageforOpenSSL.
SomeoftheSSLOpenSSLConfCmdcommandscanbeusedasanalternativetoexistingdirectives(suchasSSLCipherSuiteorSSLProtocol),thoughitshouldbenotedthatthesyntax/allowablevaluesfortheparametersmaysometimesdiffer.
Theavailableoptionsare:
可用的(不区分大小写的)协议是:
Priortoversion2.3.15,CRLcheckinginmod_sslalsosucceededwhennoCRL(s)werefoundinanyofthelocationsconfiguredwithSSLProxyCARevocationFileorSSLProxyCARevocationPath.Withtheintroductionofthisdirective,thebehaviorhasbeenchanged:whencheckingisenabled,CRLsmustbepresentforthevalidationtosucceed-otherwiseitwillfailwithan"unabletogetcertificateCRL"error.
ThefilesinthisdirectoryhavetobePEM-encodedandareaccessedthroughhashfilenames.SousuallyyouhavenotonlytoplacetheCRLfilesthere.Additionallyyouhavetocreatesymboliclinksnamedhash-value.rN.Andyoushouldalwaysmakesurethisdirectorycontainstheappropriatesymboliclinks.
Inallreleases2.4.5through2.4.20,settingSSLProxyCheckPeerNameoffwassufficienttoenablethisbehavior(astheSSLProxyCheckPeerCNdefaultwason.)Inthesereleases,bothdirectivesmustbesettoofftocompletelyavoidremoteservercertificatenamevalidation.Manyusersreportedthistobeveryconfusing.
Asofrelease2.4.21,allconfigurationswhichenableeitheroneoftheSSLProxyCheckPeerNameorSSLProxyCheckPeerCNoptionswillusethenewSSLProxyCheckPeerNamebehavior,andallconfigurationswhichdisableeitheroneoftheSSLProxyCheckPeerNameorSSLProxyCheckPeerCNoptionswillsuppressallremoteservercertificatenamevalidation.OnlythefollowingconfigurationwilltriggerthelegacycertificateCNcomparisonin2.4.21andlaterreleases;
Wildcardmatchingissupportedforspecificcases:ansubjectAltNameentryoftypedNSName,orCNattributesstartingwith*.willmatchwithanyhostnameofthesamenumberofnameelementsandthesamesuffix.E.g.*.example.orgwillmatchfoo.example.org,butwillnotmatchfoo.bar.example.org,becausethenumberofelementsintherespectivehostnamesdiffers.
Thisfeaturewasintroducedin2.4.5andsupersededthebehavioroftheSSLProxyCheckPeerCNdirective,whichonlytestedtheexactvalueinthefirstCNattributeagainstthehostname.However,manyuserswereconfusedbythebehaviorofusingthesedirectivesindividually,sothemutualbehaviorofSSLProxyCheckPeerNameandSSLProxyCheckPeerCNdirectiveswereimprovedinrelease2.4.21.SeetheSSLProxyCheckPeerCNdirectivedescriptionfortheoriginalbehavioranddetailsoftheseimprovements.
EquivalenttoSSLCipherSuite,butfortheproxyconnection.PleaserefertoSSLCipherSuiteforadditionalinformation.
ThisdirectivetogglestheusageoftheSSL/TLSProtocolEngineforproxy.Thisisusuallyusedinsidea
NotethattheSSLProxyEnginedirectiveshouldnot,ingeneral,beincludedinavirtualhostthatwillbeactingasaforwardproxy(using
ThisreferencedfileissimplytheconcatenationofthevariousPEM-encodedcertificatefiles.Uponstartup,eachclientcertificateconfiguredwillbeexaminedandachainoftrustwillbeconstructed.
Ifthisdirectiveisenabled,allofthecertificatesinthefilewillbetrustedasiftheywerealsoinSSLProxyCACertificateFile.
ThisreferencedfileissimplytheconcatenationofthevariousPEM-encodedcertificatefiles,inorderofpreference.UsethisdirectivealternativelyoradditionallytoSSLProxyMachineCertificatePath.
Currentlythereisnosupportforencryptedprivatekeys
ThefilesinthisdirectorymustbePEM-encodedandareaccessedthroughhashfilenames.Additionally,youmustcreatesymboliclinksnamedhash-value.N.Andyoushouldalwaysmakesurethisdirectorycontainstheappropriatesymboliclinks.
PleaserefertoSSLProtocolforadditionalinformation.
WhenaproxyisconfiguredtoforwardrequeststoaremoteSSLserver,thisdirectivecanbeusedtoconfigurecertificateverificationoftheremoteserver.
Thefollowinglevelsareavailableforlevel:
深度实际上是中间证书颁发者的最大数量,即验证远程服务器证书时最大允许遵循的CA证书的数量。深度为0表示仅接受自签名的远程服务器证书,默认深度为1意味着远程服务器证书可以是自签名的,或者必须由服务器直接知晓的CA签名(即CA的证书在SSLProxyCACertificatePath)等等
以下源代码版本可用:
请注意,在许多配置中,发送请求主体的客户端将不可信,因此在更改此配置设置时,必须考虑由消耗内存导致的拒绝服务攻击。
InSSLRequire,thecomparisonoperators<,<=,...arecompletelyequivalenttotheoperatorslt,le,...andworkinasomewhatpeculiarwaythatfirstcomparesthelengthoftwostringsandthenthelexicalorder.Ontheotherhand,ap_exprhastwosetsofcomparisonoperators:Theoperators<,<=,...dolexicalstringcomparison,whiletheoperators-lt,-le,...dointegercomparison.Forthelatter,therearealsoaliaseswithouttheleadingdashes:lt,le,...
Thisdirectivespecifiesageneralaccessrequirementwhichhastobefulfilledinordertoallowaccess.Itisaverypowerfuldirectivebecausetherequirementspecificationisanarbitrarilycomplexbooleanexpressioncontaininganynumberofaccesschecks.
Theexpressionmustmatchthefollowingsyntax(givenasaBNFgrammarnotation):
expr::="true"|"false"|"!"expr|expr"&&"expr|expr"||"expr|"("expr")"|compcomp::=word"=="word|word"eq"word|word"!="word|word"ne"word|word"<"word|word"lt"word|word"<="word|word"le"word|word">"word|word"gt"word|word">="word|word"ge"word|word"in""{"wordlist"}"|word"in""PeerExtList("word")"|word"=~"regex|word"!~"regexwordlist::=word|wordlist","wordword::=digit|cstring|variable|functiondigit::=[0-9]+cstring::="..."variable::="%{"varname"}"function::=funcname"("funcargs")"ForvarnameanyofthevariablesdescribedinEnvironmentVariablescanbeused.Forfuncnametheavailablefunctionsarelistedintheap_exprdocumentation.
Theexpressionisparsedintoaninternalmachinerepresentationwhentheconfigurationisloaded,andthenevaluatedduringrequestprocessing.In.htaccesscontext,theexpressionisbothparsedandexecutedeachtimethe.htaccessfileisencounteredduringrequestprocessing.
SSLRequire(%{SSL_CIPHER}!~m/^(EXP|NULL)-/\and%{SSL_CLIENT_S_DN_O}eq"SnakeOil,Ltd."\and%{SSL_CLIENT_S_DN_OU}in{"Staff","CA","Dev"}\and%{TIME_WDAY}-ge1and%{TIME_WDAY}-le5\and%{TIME_HOUR}-ge8and%{TIME_HOUR}-le20)\or%{REMOTE_ADDR}=~m/^192\.76\.162\.[0-9]+$/ThePeerExtList(object-ID)functionexpectstofindzeroormoreinstancesoftheX.509certificateextensionidentifiedbythegivenobjectID(OID)intheclientcertificate.Theexpressionevaluatestotrueiftheleft-handsidestringmatchesexactlyagainstthevalueofanextensionidentifiedwiththisOID.(IfmultipleextensionswiththesameOIDarepresent,atleastoneextensionmustmatch).
Thefollowingfivestoragetypesarecurrentlysupported:
SSLSessionCache“dbm:/usr/local/apache/logs/ssl_gcache_data”SSLSessionCache“shmcb:/usr/local/apache/logs/ssl_gcache_data(512000)”该ssl-cache互斥用于串行访问会话缓存以防止腐败。这个互斥量可以使用Mutex指令进行配置。
票证密钥文件必须包含48个字节的随机数据,最好由高熵源创建。在基于Unix的系统上,可以如下创建票据密钥文件:
ddif=/dev/randomof=/path/to/file.tkeybs=1count=48
票据密钥应该经常旋转(替换),因为这是使现有会话票证失效的唯一方法-OpenSSL当前不允许指定票据生存期的限制。重新启动Web服务器后,只能使用新票证密钥。所有现有的会话票证在重新启动后都会失效。
票证密钥文件包含敏感的密钥材料,应使用类似于所使用的文件许可权来保护SSLCertificateKeyFile。
该指令允许启用或禁用TLS会话票证(RFC5077)的使用。
TLS会话票据默认启用。使用它们而不必以适当的频率(例如每天)重新启动web服务器就可以实现完美的前向保密。
此伪指令设置用于伪造未知用户的SRP用户参数的种子,以避免泄露给定用户是否存在。指定一个秘密字符串。如果不使用此指令,则Apache将向指定未知用户名的客户端返回UNKNOWN_PSK_IDENTITY警报。
SSLSRPUnknownUserSeed"secret"
此指令启用TLS-SRP,并设置包含TLS-SRP用户名,验证程序,盐和组参数的OpenSSLSRP(安全远程密码)验证程序文件的路径。
SSLSRPVerifierFile"/path/to/file.srpv"
验证程序文件可以使用openssl命令行工具创建:
opensslsrp-srpvfilepasswd.srpv-userinfo"someinfo"-addusername
在可选-userinfo参数中给出的值在SSL_SRP_USERINFO请求环境变量中是可用的。
如果SSLUseStapling启用,则配置用于存储包含在TLS握手中的OCSP响应的高速缓存。OCSP装订必须配置缓存。除了none和nonenotnull,与支持相同的存储类型SSLSessionCache。
启用并且针对OCSP响应者的装订目的查询失败时,mod_ssl将合成客户端的“tryLater”响应。只有在有效的情况下才有效SSLStaplingReturnResponderErrors。
该指令覆盖从证书的authorityInfoAccess(AIA)扩展中获得的OCSP响应者的URI。一个潜在的用途是何时使用代理来检索OCSP查询。
这个选项设定考虑到装订目的的OCSP响应(即何时SSLUseStapling打开)时的最大允许年龄(“新鲜度”)。默认值(-1)不强制实现最大年龄,这意味着只要nextUpdate字段在将来,OCSP响应就被认为是有效的。
该指令设置是否允许非SNI客户端访问基于名称的虚拟主机。如果设置为on默认的基于名称的虚拟主机,SNI不知道的客户端将不被允许访问属于该特定IP/端口组合的任何虚拟主机。如果on在任何其他虚拟主机中设置,SNI不知道的客户端不允许访问这个特定的虚拟主机。
请注意,如果使用该FakeBasicAuth选项,则此伪指令不起作用(请参阅SSLOptions)。
OCSP装订减轻了客户自己查询OCSP响应的难度,但是应该注意的是,在RFC6066规范中,服务器的CertificateStatus回复可能只包括针对单个证书的OCSP响应。对于在其链中具有中间CA证书的服务器证书(当今的典型情况),因此当前实现中的装订仅部分实现了“节省往返和资源”的既定目标-也参见RFC6961(TLS多证书状态扩展)。
启用OCSP装订时,ssl-stapling互斥锁用于控制对OCSP装订高速缓存的访问,以防止损坏,并使用sss-stapling-refresh互斥锁来控制OCSP响应的刷新。这些互斥体可以使用Mutex指令进行配置。
此伪指令为客户端身份验证设置证书验证级别。注意这个指令可以用在每个服务器和每个目录的上下文中。在每服务器上下文中,它适用于在建立连接时在标准SSL握手中使用的客户端身份验证过程。在每个目录上下文中,在HTTP请求被读取之后但在发送HTTP响应之前,它强制使用重新配置的客户端验证级别的SSL重新协商。
以下级别可用于级别:
深度实际上是中间证书颁发者的最大数量,即验证客户端证书时最大允许遵循的CA证书的数量。深度为0表示仅接受自签名客户端证书,默认深度为1意味着客户端证书可以是自签名的,或者必须由服务器直接知道的CA签名(即,CA的证书是下SSLCACertificatePath)等
校睿宝,培训机构学员管理软件,教师工资计算软件,消课管理软件!
数据备份软件,文件数据备份软件,文件备份软件,B/S架构备份软件,分布式计算机备份软件!