SSL伪指令

本文深入探讨了Apache HTTP Server的配置参数,包括密钥文件、日志级别、SSL加速器禁用等关键设置,提供了详细的说明和用法示例。

原:[http://huihai.zjuyc.com/manual/ibm/index.html]

Keyfile

 

  • 描述 - 设置要使用的密钥文件。
  • 作用域 - 全局基本和虚拟主机
  • 用法 - Keyfile /密钥文件的路径/keyfile.kdb
  • - 密钥文件的文件名

LogLevel

 

  • 描述 - 调整记录在出错日志中的冗余消息。当指定特定级别时,同时报告来自所有其它更高重要性级别的消息。例如,当指定 LogLevel info 时,同时也报告 noticewarn 日志级别的消息。我们建议至少指定 crit 级
  • 配置文件中的多个实例 - 允许。首选项顺序自顶向下,从头至尾。如果客户机不支持密码规范,则关闭连接。
  • 作用域 - 服务器配置,虚拟主机
  • 用法 - LogLevel 级别
  • - 下列级别可用,以重要性降序排列:

     

    级别描述示例
    emerg紧急情况 - 系统不可用。“子无法打开锁文件。退出”
    alert 必须立即执行操作。“getpwuid:无法根据用户标识确定用户名”
    crit临界条件。“套接字:获取套接字失败,退出子”
    error错误条件。“脚本头过早结束”
    warn警告条件。“子进程 1234 未退出,发送另一个 SIGHUP 命令”
    notice正常但是重要条件。“httpd:捕捉 SIGBUS,试图将核心转储到 ...”
    info信息。“服务器正忙,(您可能需要增加 StartServers 或 Min/MaxSpareServers)...”
    debug 调试级消息。“打开配置文件 ...”
  • - 如果未指定,缺省为 LogLevel error

SSLAcceleratorDisable

将此伪指令放在配置文件内的任何位置(包括在虚拟主机内)。在初始化期间,如果确定机器上已安装加速器设备,则该加速器用于执行安全事务。如果您要禁用加速器设备,使用 SSLAcceleratorDisable。

 

 

  适用于 UNIX 系统

 

 

SSLCacheDisable(在 Windows NT 上无效)

 

 

 

 

 

 

 

  • 描述 - 禁用外部 SSL 会话标识高速缓存
  • 配置文件中的多个实例 - 不允许
  • 作用域 - 每个物理 Apache 服务器实例有一个
    (仅在虚拟主机节之外才允许)
  • 用法 - SSLCacheDisable
  • - 无
  • - 仅在 UNIX 上有效

 

 

  适用于 UNIX 系统

 

 

SSLCacheEnable(在 Windows NT 上无效)

 

 

 

 

 

 

 

  • 描述 - 启用外部 SSL 会话标识高速缓存
  • 配置文件中的多个实例 - 不允许
  • 作用域 - 每个物理 Apache 服务器实例有一个
    (仅在虚拟主机节之外才允许)
  • 用法 - SSLCacheEnable
  • - 无
  • - 仅在 UNIX 上有效

 

 

  适用于 UNIX 系统

 

 

SSLCacheErrorLog(在 Windows NT 上无效)

 

 

 

 

 

 

 

  • 描述 - 设置用于会话标识高速缓存出错日志的文件名
  • 作用域 - 每个物理服务器实例有一个
    (仅在虚拟主机节之外才允许)
  • 用法 - SSLCacheErrorLog /usr/HTTPServer/log/sidd_log
  • - 有效文件名
  • - 在 Windows NT 上无效

 

 

 

  适用于 UNIX 系统

 

 

SSLCachePath(在 Windows NT 上无效)

 

 

 

 

 

 

 

  • 描述 - 指定会话标识高速缓存守护进程可执行文件的路径。
  • 示例 - SSLCachePath /usr/HTTPServer/bin/sidd
  • 作用域 - 每个物理 IBM HTTP 服务器有一个
  • - 有效路径名。
  • - 在 Windows NT 上无效

 

 

  适用于 UNIX 系统

 

 

SSLCachePortFilename(在 Windows NT 上无效)

 

 

 

 

 

 

 

  • 描述 - 设置 UNIX 域套接字的文件名,此套接字用于在服务器实例和会话标识高速缓存守护进程间进行通信。
  • 作用域 - 每个物理 Apache 服务器实例有一个(仅在虚拟主机节之外才允许)。
  • - 有效文件名。 注:在启动时,Web 服务器删除此文件;不要使用现有文件名。
  • 用法 - SSLCachePortFilename /usr/HTTPServer/logs/siddport
    • 对于 AIX:缺省为 /usr/HTTPServer/logs/siddport
    • 对于 Solaris:缺省为 /opt/IBMHTTPD/logs/siddport

 

 

  适用于 UNIX 系统

 

 

SSLCacheTraceLog(在 Windows NT 上无效)

 

 

 

 

 

 

 

  • 描述 - 指定记录会话标识跟踪消息的跟踪日志。
  • 示例 - SSLCacheTraceLog /usr/HTTPServer/log/sidd-trace.log
  • 作用域 - 每个物理 IBM HTTP 服务器有一个
  • - 有效路径名。
  • - 在 Windows NT 上无效

 

SSLCipherBan

 

SSLCipherRequire

 

 

SSLCipherSpec

 

  • 描述 - 指定用于安全事务的密码规范
  • 配置文件中的多个实例 - 允许。首选项顺序自顶向下,从头至尾。如果客户机不支持密码规范,则关闭连接。
  • 作用域 - 虚拟主机
  • 用法 - SSLCipherSpec 短名
    SSLCipherSpec 长名
  • - 请参阅 SSL 版本 2 密码规范SSL 版本 3 和 TLS 版本 1 密码规范
  • - 如果未指定,服务器使用所有可用于已安装的 GSK 库的密码规范

 

版本 2 密码规范
短名长名描述
27SSL_DES_192_EDE3_CBC_WITH_MD5Triple-DES(168 位)
21SSL_RC4_128_WITH_MD5RC4(128 位)
23SSL_RC2_CBC_128_CBC_WITH_MD5RC2(128 位)
26SSL_DES_64_CBC_WITH_MD5DES(56 位)
22SSL_RC4_128_EXPORT40_WITH_MD5RC4(40 位)
24SSL_RC2_CBC_128_CBC_EXPORT40_WITH_MD5RC2(40 位)

 

SSL 版本 3 和 TLS 版本 1 密码规范
短名长名描述
3ASSL_RSA_WITH_3DES_EDE_CBC_SHATriple-DES SHA(168 位)
33SSL_RSA_EXPORT_WITH_RC4_40_MD5RC4 SHA(40 位)
34SSL_RSA_WITH_RC4_128_MD5RC4 MD5(128 位)
39SSL_RSA_WITH_DES_CBC_SHADES SHA(56 位)
35SSL_RSA_WITH_RC4_128_SHARC4 SHA(128 位)
36(请参阅注 1。)SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5RC2 MD5(40 位)
32SSL_RSA_WITH_NULL_SHA 
31SSL_RSA_WITH_NULL_MD5 
30SSL_NULL_WITH_NULL_NULL 
62TLS_RSA_EXPORT1024_WITH_RC4_56_SHARC4 SHA Export 1024(56 位)
64TLS_RSA_EXPORT1024_WITH_DES_CBC_SHADES SHA Export 1024(56 位)

 

注 1:密码规范 36 要求 Netscape Navigator 4.07;使用 Netscape 浏览器的早期版本将无法工作。

 

SSLClientAuth

 

  • 描述 - 设置所使用的客户机认证方式(none (0)、optional (1) 或 required (2))。
  • 作用域 - 虚拟主机
  • 用法 - SSLClientAuth <要求的级别> [crl]
    • 0/None:无需请求客户机证书
    • 1/Optional:请求客户机证书,但非必需。
    • 2/Required:有效客户机证书是必需的
    • CRL:在 SSL 虚拟主机内打开或关闭 crl。如果使用证书撤销列表 (CRL),则需要将 "CRL" 指定为 SSLClientAuth 的第二个自变量。例如:SSLClientAuth 2 crl。如果不指定 "crl",则不能在 SSL 虚拟主机中执行 CRL。
  • -
    • 如果未指定,缺省为 SSLClientAuth none。
    • 如果指定值 0/None,则不能使用 CRL 选项

SSLClientAuthGroup

 

  • 描述 - 允许将客户机证书属性的组组合在一起,以用于 SSLClientAuthRequire 伪指令。
  • 作用域 - 虚拟主机
  • 用法 - <SSLClientAuthGroup 组名> <逻辑字符串>

有效逻辑表达式的描述

例如:

SSLClientAuthGroup (CommonName = "Fred Smith" OR CommonName = "John Deere") AND Org = IBM

这意味着无法为对象提供服务,除非客户机证书包含公共名称 "Fred Smith" 或 "John Deere",而组织为 "IBM"。对于属性检查,唯一有效的比较是等于和不等于(= 和 !=)。每个属性检查可由 AND、OR 或 NOT(也可以是 &&、|| 和 !)来链接. 括号用于将比较分组。如果属性值包含非字母数字字符,则必须使用引号对该值进行定界。

有效属性为:

  • CommonName
  • Country
  • Email
  • Group
  • IssuerCommonName
  • IssuerCountry
  • IssuerEmail
  • IssuerLocality
  • IssuerOrg
  • IssuerOrgUnit
  • IssuerStateOrProvince
  • Locality
  • Org
  • OrgUnit
  • StateOrProvince

下列短名也是有效的:

     CN, C, E, G, ICN, IC, IE, IL, IO, IOU, IST, L, O, OU, ST 

注意,每个对象允许多个 SSLClientAuthRequire 伪指令;最终效果是使用 "AND" 将这些伪指令连接在一起。

 

SSLClientAuthRequire

 

  • 描述 - 允许在为对象提供服务之前进行广泛的客户机证书信息确认
  • 作用域 - 目录
  • 用法 - SSLClientAuthRequire CommonName = Richard
  • - 由用 AND、OR、NOT 和括号链接的属性检查组成的逻辑表达式

有效逻辑表达式的描述

例如:

SSLClientAuthRequire (CommonName = "Fred Smith" OR CommonName = "John Deere") AND Org = IBM

这意味着无法为对象提供服务,除非客户机证书包含公共名称 "Fred Smith" 或 "John Deere",而组织为 "IBM"。对于属性检查,唯一有效的比较是等于和不等于(= 和 !=)。每个属性检查可由 AND、OR 或 NOT(也可以是 &&、|| 和 !)来链接. 括号用于将比较分组。如果属性值包含非字母数字字符,则必须使用引号对该值进行定界。

有效属性为:

  • CommonName
  • Country
  • Email
  • IssuerCommonName
  • IssuerCountry
  • IssuerEmail
  • IssuerLocality
  • IssuerOrg
  • IssuerOrgUnit
  • IssuerStateOrProvince
  • Locality
  • Org
  • OrgUnit
  • StateOrProvince

下列短名也是有效的:

     CN, C, E, ICN, IC, IE, IL, IO, IOU, IST, L, O, OU, ST 

注意,每个对象允许多个 SSLClientAuthRequire 伪指令;最终效果是使用 "AND" 将这些伪指令连接在一起。

 

SSLCRLHostname

 

  • 描述 - CRL 数据库驻留的 LDAP 服务器的 TCP/IP 名称或地址。
  • 作用域 - 全局服务器或虚拟主机
  • 用法 - SSLCRLHostname <TCP/IP 名称或地址>
  • - LDAP 服务器的 TCP/IP 名称或地址
  • - 缺省情况下,禁用 SSL。

SSLCRLPort

 

  • 描述 - CRL 数据库驻留的 LDAP 服务器的端口。
  • 作用域 - 全局服务器或虚拟主机
  • 用法 - SSLCRLPort <端口号>
  • - LDAP 服务器的端口;缺省=389
  • - 缺省情况下,禁用 SSL。

SSLCRLUserID

 

  • 描述 - 发送到 CRL 数据库驻留的 LDAP 服务器的用户标识。
  • 作用域 - 全局服务器或虚拟主机
  • 用法 - SSLCRLUserID <用户标识>
  • - LDAP 服务器的用户标识
  • - 如果未指定绑定,缺省为 anonymous。

SSLDisable

 

  • 描述 - 禁用此虚拟主机的 SSL。
  • 作用域 - 全局服务器或虚拟主机
  • 用法 - SSLDisable
  • - 无
  • - 缺省情况下,禁用 SSL。

SSLEnable

 

  • 描述 - 启用此虚拟主机的 SSL。
  • 作用域 - 全局服务器或虚拟主机
  • 用法 - SSLEnable
  • - 无
  • - 缺省情况下,禁用 SSL。

 

SSLFakeBasicAuth

 

  • 描述 - 启用伪基本认证支持。 允许客户机证书的专有名称成为用户/密码基本认证对的用户部分。密码是 "password"。
  • 作用域 - 在目录节中,与 AuthName、AuthType 和需要的伪指令一起使用。
  • 用法 - SSLFakeBasicAuth
  • - 无

 

SSLPKCSDriver

 

  • 描述 - 标识用于访问 PKCS11 设备的模块的全限定路径
  • 作用域 - 全局服务器或虚拟主机
  • 用法 - <用于访问 PKCS11 设备的模块的路径>;如果模块在用户的路径中,则仅指定模块的名称。

 

 

  涉及 AIX涉及 HPUX涉及 Solaris涉及 Windows NT

 

 

下列是每个 PKCS11 设备的模块的缺省位置:

Ncipher

  • AIX/opt/nfast/xlc_r/lib/libcknfast.so
  • HPUX/opt/nfast/ansic/lib/libcknfast.sl
  • SUN/opt/nfast/swspro/lib/libcknfast.so
  • Windows NTc:\nfast\bin\cknfast.dll

 

 

 

 

 

 

 

IBM4758

 

  涉及 AIX涉及 Windows NT

 

 

  • AIX/usr/lib/pkcs11/PKCS11_API.so
  • Windows NTc:\pkcs\bin\nt\cryptoki.dll

 

 

 

 

 

   

SSLServerCert

 

  • 描述 - 设置用于此虚拟主机的服务器证书
  • 作用域 - 基于 IP 的虚拟主机
  • 用法 - SSLServerCert my_certificate_label;在 PKCS11 设备上 - SSLServerCert mytokenlabel:mykeylabel
  • - 证书标签
  • - 证书标签不使用定界符。
    确保标签包含在一行中。
    忽略开始处和结尾处的空白。

 

SSLStashfile

 

  • 描述 - 文件的路径及文件名,包含用于打开 PKCS11 设备的加密密码。
  • 作用域 - 虚拟主机
  • 用法 - SSLStashfile "c:/usr/HTTPServer/IBM HTTP Server/conf/pkcs11.passwd"
  • - 路径及文件名
  • - IHS 的 bin 中应有一个 sslstash 命令。此命令用于存储 PKCS11 设备的密码。使用 sslstash 命令后创建的存储文件可保持两个不同的密码,用于两个不同的功能:crl 和密码术。

    sslstash 的语法是:sslstash [-c] <文件> <功能> <密码>,其中:

    • -c = 创建新的存储文件。如果未指定,则更新现有存储文件
    • 文件 = 要创建或更新的文件的全限定名称
    • 功能 = 使用密码的功能。有效值为 crlcrypto
    • 密码 = 要存储的密码
    • 用法 - sslstash -c conf\pkcs11.passwd crypto pkcs11

 

SSLVersion

 

  • 描述 - 如果客户机尝试与不同于指定版本的 SSL 协议相连接,则允许对象访问拒绝。
  • 作用域 - 每个目录节有一个
  • 用法 - SSLVersion ALL
  • - SSLV2|SSLV3|TLSV1|ALL

SSLV2Timeout

 

  • 描述 - 设置 SSL 版本 2 会话标识的超时
  • 作用域 - 全局基本和虚拟主机
  • 用法 - SSLV2Timeout 60
  • - 0 至 100 秒
  • - 缺省值为 40

 

SSLV3Timeout

 

  • 描述 - 设置 SSL 版本 3 会话标识的超时
  • 作用域 - 全局基本和虚拟主机
  • 用法 - SSLV3Timeout 1000
  • - 0 至 86400 秒
  • - 缺省为 120
### 如何在 Qt 中使用 SSL 连接 MySQL 数据库 当尝试通过 SSL 建立安全连接时遇到错误 `SSL connection error: unknown error number` 表明存在配置上的问题[^1]。一种解决方法是在 Windows 上通过服务管理器 (`services.msc`) 找到并重启 MySQL80 服务来关闭 SSL 功能,这使得应用程序能够成功建立非加密连接[^2]。 然而,如果目标是启用而不是禁用 SSL,则需确保正确设置了必要的参数: #### 设置 MySQL 的 SSL 参数 为了使 Qt 应用程序能利用 SSL 加密通信,在创建数据库连接对象时应指定特定选项。这些设置通常涉及提供证书路径和其他验证材料的位置。以下是 Pythonic 方式的伪代码表示法用于说明目的;实际应用中应当转换成 C++ 或者其他支持的语言版本: ```cpp QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("your_host_name"); db.setDatabaseName("database_name"); db.setUserName("username"); db.setPassword("password"); // Enable SSL mode and specify the paths of CA file, client certificate, key files. QStringList sslOptions; sslOptions << "CLIENT_SSL"; sslOptions << QString("DEFAULT_GROUP=%1").arg("client"); sslOptions << QString("TLS_VERSION=TLSv1.2,TLSv1.3"); sslOptions << QString("CA_FILE=C:\\path\\to\\ca-cert.pem"); sslOptions << QString("KEY_FILE=C:\\path\\to\\client-key.pem"); sslOptions << QString("CERT_FILE=C:\\path\\to\\client-cert.pem"); db.setConnectOptions(sslOptions.join(";")); if (!db.open()) { qDebug() << "Error:" << db.lastError().text(); } else { qDebug() << "Connected successfully with SSL!"; } ``` 上述代码片段展示了如何向 `setConnectOptions()` 方法传递一系列字符串形式的 SSL 相关指令,从而激活客户端与服务器之间的 TLS/SSL 握手过程[^4]。 另外值得注意的是,除了调整应用程序端口外,还需要保证 MySQL Server 自身已经启用了 SSL 支持,并且防火墙允许 HTTPS 流量传输。对于本地开发环境来说,有时最简单的方法就是暂时停用 SSL 来排除潜在干扰因素。 #### 复制必要文件至 Qt 安装目录 为了让 Qt 正常工作于带有 MySQL 的项目里,还需将某些依赖项复制过来。具体而言,应该把 `libmysql.dll` 和 `libmysql.lib` 文件放置于 Qt 已安装位置下的 bin 子文件夹内[^3]。 #### 配置 MySQL 环境变量 最后一步是为了方便起见而推荐执行的操作——即为系统添加 MySQL 变量。这样做可以让开发者无需每次都指明完整路径就能调用 MySQL CLI 工具或脚本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值