本指南将向您展示如何在 Oracle 服务器上生成 CSR(证书签名请求)。它涵盖了三种可以在本地创建 CSR 的 Oracle 产品:Oracle Wallet Manager(或现代化的 orapki 命令)、Oracle iPlanet Web Server,以及 Oracle WebLogic Server(Java keytool)。请选择与您的产品相匹配的部分,按照步骤操作,然后将 CSR 提交给您的证书颁发机构。
在 Oracle Wallet Manager 上生成 CSR
如果您已经生成了 CSR,请跳转到在 Oracle 上安装 SSL 证书。否则,在 Oracle Wallet Manager 上您有两个选择:图形化的 Oracle Wallet Manager(OWM)界面,或者随 Oracle 产品附带的现代化 orapki 命令行工具。orapki 的方式可脚本化,也是 Oracle 推荐用于当前部署的选项;OWM 依然支持执行相同的操作。
方案 A:Oracle Wallet Manager(图形界面)
- 打开 Oracle Wallet Manager。如果您尚未拥有钱包,请选择 Wallet > New,设置一个强密码,并保存。
- 在主菜单中,选择 Operations > Add Certificate Request。
- 在对话框中,按照您的组织的法定注册信息准确填写证书请求详情:
- Common Name(CN,通用名称):您想要保护的完全限定域名,例如 www.yourdomain.com,或通配符形式如 *.yourdomain.com。请勿输入个人姓名。
- Organizational Unit(OU,组织单位):公共 CA 已不再签发此字段。请留空。
- Organization(O,组织):您公司的完整法定名称,例如 Your Company LLC。对于 DV(域名验证)证书,此项可留空。
- Locality / City(L,所在城市):公司注册所在城市的完整名称,例如 Seattle。请勿使用缩写。
- State / Province(ST,州/省):完整的州或省名称,例如 Washington。请勿使用两字母代码。
- Country(C,国家):两字母的 ISO 国家代码,例如 US、GB、DE。
- Key Size(密钥长度):2048 位是当前公开的最低要求。Oracle 钱包提供 512、1024、2048、4096 以及更大的选项,但没有 3072 位选项,因此这里的下一档就是 4096。
- 点击 OK。确认窗口将报告 CSR 已成功生成。钱包导航菜单中的证书节点现在会显示状态 Certificate: [Requested]。
- 返回钱包视图,选择 Operations > Export Certificate Request,为文件命名(例如 yourdomain.csr),然后保存。请勿关闭或删除该钱包:它现在包含与此 CSR 配对的私钥。
注意:Oracle Wallet Manager 图形界面没有单独的“Subject Alternative Name(SAN,主体备用名称)”输入项。现代浏览器和 TLS 客户端会根据 SAN 扩展来验证证书,而不是通用名称,因此请在您的证书颁发机构订单表单上的 SAN 字段中列出所有需要的主机名(例如 yourdomain.com 和 www.yourdomain.com)。CA 会将它们添加到签发的证书中。如果您使用 orapki 命令行(下方的方案 B),您可以使用 -addext_san 标志直接在 CSR 中嵌入 SAN。
方案 B:orapki(命令行)
orapki 工具随 Oracle 产品(数据库、Fusion Middleware 和 HTTP Server 发行版)一起提供,是 OWM 的可脚本化替代方案。流程分为两条命令:先创建钱包和密钥对,然后导出 CSR。
创建一个自动登录钱包并添加密钥对:
orapki wallet create -wallet /etc/oracle/wallet -auto_login -pwd "YourStrongPassword"
orapki wallet add -wallet /etc/oracle/wallet
-dn "CN=www.yourdomain.com, O=Your Company LLC, L=Seattle, ST=Washington, C=US"
-keysize 2048
-addext_san "DNS:yourdomain.com,DNS:www.yourdomain.com"
-pwd "YourStrongPassword"
然后从钱包中导出 CSR:
orapki wallet export -wallet /etc/oracle/wallet
-dn "CN=www.yourdomain.com, O=Your Company LLC, L=Seattle, ST=Washington, C=US"
-request /tmp/yourdomain.csr
-pwd "YourStrongPassword"
请将钱包路径、DN 和密码替换为您自己的值。export 命令中的 DN 必须与添加密钥对时使用的 DN 完全一致。-addext_san 标志(orapki 12.2.1.1 及更高版本)会将“Subject Alternative Name(主体备用名称)”直接嵌入到 CSR 中;请列出证书必须涵盖的所有主机名,包括顶级域名和 www 子域名。此时文件 yourdomain.csr 已包含 CSR,可以提交了。
提交 CSR
用任意文本编辑器(例如记事本)打开 .csr 文件。该文件是纯文本,开头为 -----BEGIN NEW CERTIFICATE REQUEST-----(或 -----BEGIN CERTIFICATE REQUEST-----),结尾为对应的 -----END 行。复制整个代码块,包括这些头尾行,然后在向 CA 结账时粘贴到 CSR 字段中。
在 Oracle iPlanet Web Server 上生成 CSR
Oracle iPlanet(前身为 Sun Java System Web Server,之后为 Sun ONE)将服务器证书及其密钥保存在令牌存储中。CSR 向导位于管理控制台中:
- 在 Oracle iPlanet 管理控制台中,打开 Server Certificates,然后点击 Request。
- 从 Configuration 列表中,选择证书所对应的配置。
- 选择将保存密钥的 Token(Cryptographic Device,密码设备)。如果密钥保存在服务器上,请选择 Internal;否则从下拉菜单中选择您的外部令牌。输入所选令牌的密码。
- 填写证书详情:
- Server Name(服务器名称):您想要保护的完全限定域名,例如 www.yourdomain.com。对于通配符证书,请在前面加上星号,例如 *.yourdomain.com。
- Organization(O,组织):您公司的完整法定名称,例如 Your Company LLC。
- Organizational Unit(OU,组织单位):已被公共 CA 弃用。请留空。
- Locality(L,所在城市):您组织注册所在城市的完整名称。
- State or Province(ST,州或省):您组织注册所在的完整州名。
- Country(C,国家):两字母 ISO 国家代码,例如美国为 US。请参阅完整国家代码列表。
- 对于 Key Type(密钥类型),选择 RSA,密钥长度选择 2048 位(或更大)。
- 对于 Certificate Signing Authority(CSA),选择 CA Signed。
- 检查您所输入的值,然后点击 Generate Request,再点击 Finish。
- 将新生成的 CSR(包括
-----BEGIN NEW CERTIFICATE REQUEST-----和-----END NEW CERTIFICATE REQUEST-----行)复制到文本文件中,然后点击 Close。
注意:与 Oracle Wallet Manager 一样,iPlanet CSR 向导没有 SAN 字段。请在您的 CA 订单表单的 SAN 字段中提供证书必须涵盖的所有主机名(顶级域名加 www,以及任何其他子域名)。
在 Oracle WebLogic Server 上生成 CSR
Oracle WebLogic Server 使用 Java 密钥库。您需要通过两条命令使用 Java keytool 工具生成 CSR:首先,keytool -genkeypair 会在选定的别名下创建密钥库和私钥,然后 keytool -certreq 会导出对应的 CSR。之后导入已签名的证书时必须重复使用相同的别名,因此密钥、CSR 以及最终的证书都保存在同一处。
步骤 1:创建密钥库和私钥
在 WebLogic 服务器上打开终端,并创建一个 PKCS12 格式的新密钥库。自 JDK 9 起,PKCS12 是 Java 中的默认密钥库格式,也是现代、可移植的标准。较旧的专有 JKS 格式已正式弃用:
keytool -genkeypair
-alias server
-keyalg RSA -keysize 2048
-storetype PKCS12
-keystore yourdomain.p12
-validity 825
各标志的含义如下:
- -alias server:密钥库中该条目的名称。请选择一个您能记住的标签(通常为 server,或您的域名)。请务必记下它。在生成 CSR 以及之后导入已签名证书时,您都必须重复使用完全相同的别名。
- -keyalg RSA -keysize 2048:2048 位 RSA 密钥是当前公开的最低要求。对于新的密钥库,若需要更长的密钥有效期,可合理升级为 3072 位。大多数公共 CA 也接受 ECDSA(-keyalg EC -groupname secp256r1),如果您希望使用更小、更快的密钥;-groupname 需要 JDK 13 或更高版本,因此在较旧的 WebLogic 版本所支持的 Java 8 和 Java 11 运行环境上,请改用 -keyalg EC -keysize 256,这会选择相同的曲线。
- -storetype PKCS12:强制使用现代化的 PKCS12 密钥库。对应的扩展名为 .p12(或 .pfx)。
- -keystore yourdomain.p12:要创建的密钥库文件。请替换为您能记住的名称,并妥善保管该文件:它包含您的私钥。
- -validity 825:密钥库内自签名占位证书的有效期。CA 签发的证书稍后会替换它,因此这个具体数值不会影响生产环境的有效期。
注意:如果您必须为较旧的 WebLogic 部署继续使用 JKS,请将 -storetype PKCS12 替换为 -storetype JKS,并使用 .jks 扩展名。其余流程完全相同。对于通配符证书,请勿在密钥库文件名中使用星号:大多数文件系统不支持此字符。
接下来 keytool 会提示您输入密钥库密码。请选择一个强密码,并保存到您的密码管理工具中:之后每次执行 keytool 命令以及配置 WebLogic 的密钥库时都需要用到它。对于 PKCS12 密钥库,密钥密码等同于密钥库密码,因此只需要记住一个密码。
步骤 2:输入您的组织信息(DN)
keytool 现在会要求输入 Distinguished Name(DN,可分辨名称):即将写入 CSR 的身份字段。请针对每个提示准确输入您组织的合法信息。标点符号和准确性都很重要,因为 CA 会将其与公开的商业记录进行比对,若不一致将被拒绝。
- First and last name(CN):这是 keytool 使用的措辞,但实际对应通用名称字段。请输入您要保护的准确 FQDN,例如 www.yourdomain.com,或通配符形式如 *.yourdomain.com。请勿输入个人姓名。
- Organizational unit(OU,组织单位):公共 CA 已不再签发此字段。请勿尝试通过直接按下回车键来跳过:keytool 会替换为默认值,并在请求中写入 OU=Unknown,输入一个空格也会得到相同结果。没有交互式方法可以完全省略此项,因此请输入部门名称(例如 IT),或者使用下方展示的 -dname 形式,并在字符串中省略 OU 部分。
- Organization(O,组织):公司的完整法定名称,例如 Your Company LLC。如果公司名称中含有 & 或 @ 等符号,请拼写出来或省略;keytool 会拒绝某些特殊字符。
- City or locality(L,所在城市):完整的城市名称,例如 San Francisco。请勿使用缩写。
- State or province(ST,州或省):完整的州或省名称,例如 California。请勿使用两字母代码。
- Country code(C,国家代码):两字母的 ISO 国家代码,例如 US、GB、DE。
最后一个提示结束后,keytool 会显示类似以下的摘要:CN=www.yourdomain.com, OU=Unknown, O=Your Company LLC, L=San Francisco, ST=California, C=US。输入 yes 确认。此时密钥库文件已存在,其中包含一个条目:您的别名,保存着私钥和一个自签名的占位证书。
如果您希望使用非交互式命令,可以直接内联传入 DN,从而跳过提示:
keytool -genkeypair
-alias server
-keyalg RSA -keysize 2048
-storetype PKCS12
-keystore yourdomain.p12
-dname "CN=www.yourdomain.com, O=Your Company LLC, L=San Francisco, ST=California, C=US"
-validity 825
步骤 3:使用 SAN 生成 CSR
现代浏览器和 TLS 客户端会根据 Subject Alternative Name(SAN,主体备用名称)扩展来验证证书,而不仅仅依据通用名称。请在 CSR 中直接请求 SAN,以便 CA 将其包含在签发的证书中。使用步骤 1 中相同的别名和密钥库:
keytool -certreq
-alias server
-keystore yourdomain.p12
-file yourdomain.csr
-ext san=dns:yourdomain.com,dns:www.yourdomain.com
各标志的含义如下:
- -alias server:必须与步骤 1 中的别名一致。这是用于对请求进行签名的私钥所对应的别名。
- -keystore yourdomain.p12:必须与步骤 1 中的密钥库一致。
- -file yourdomain.csr:CSR 的输出文件名。
- -ext san=dns:…:Subject Alternative Name(主体备用名称)扩展。请列出证书必须涵盖的所有主机名,包括裸顶级域名(yourdomain.com)和 www 子域名。如需添加更多条目,请用逗号分隔,例如 dns:api.yourdomain.com。
keytool 会提示输入密钥库密码,并将 CSR 写入当前目录下的 yourdomain.csr。
重要提示:保留您的别名和密钥库
在 WebLogic 上使用 keytool 时最常见的错误就是将已签名的证书导入到新的别名下。这样做会把证书存储为一个独立的可信条目,且不附带私钥,导致 WebLogic 的 SSL 监听器无法启动。请务必将已签名的回复导入到保存私钥的同一别名(即步骤 1 中使用的别名)中。
在关闭终端之前,请记下以下三项信息:
- 别名(本指南中为 server)。
- 密钥库文件路径(例如 yourdomain.p12)。
- 密钥库密码。
如果您不确定哪个别名保存着您的密钥,请列出密钥库内容,并查找类型为 PrivateKeyEntry 的条目:
keytool -list -v -keystore yourdomain.p12
步骤 4:提交 CSR 之前先进行验证
在 CA 验证之前,先检查 DN 中的拼写错误或缺失的 SAN。使用 keytool 打印 CSR:
keytool -printcertreq -file yourdomain.csr
或者,如果已安装 OpenSSL:
openssl req -noout -text -in yourdomain.csr
请在输出结果中确认三项内容:Subject 显示的是您确切的 DN,Subject Alternative Name 列出了您需要的所有主机名,且 Public-Key 长度与您所要求的一致(2048 位 RSA,或您选择的其他值)。您也可以将 CSR 粘贴到我们的CSR 解码器中,在浏览器里进行同样的检查。
步骤 5:将 CSR 提交给您的证书颁发机构
用任意文本编辑器打开 yourdomain.csr。该文件是纯文本,开头为 -----BEGIN NEW CERTIFICATE REQUEST-----,结尾为 -----END NEW CERTIFICATE REQUEST-----。复制整个代码块,包括这些头尾行,然后在向 CA 结账时粘贴到 CSR 字段中。在 Windows 上,使用 Ctrl + A 然后 Ctrl + C 来获取完整文本;在 macOS 上,使用 Cmd + A 然后 Cmd + C。
在关闭终端之前,请将密钥库文件(yourdomain.p12)备份到安全位置。如果您丢失了密钥库,就等于丢失了私钥,届时 CA 签发的证书将无法使用。
在 CA 验证您的请求并签发证书后,请继续参考如何在 Oracle 上安装 SSL 证书。在 WebLogic 上,您需要将已签名的证书导入回同一密钥库中的同一别名,然后将 SSL 监听器指向该密钥库。


