bg-tutorials

如何在Oracle服务器上生成CSR代码

本指南将向您展示如何在 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(图形界面)

  1. 打开 Oracle Wallet Manager。如果您尚未拥有钱包,请选择 Wallet > New,设置一个强密码,并保存。
  2. 在主菜单中,选择 Operations > Add Certificate Request。
  3. 在对话框中,按照您的组织的法定注册信息准确填写证书请求详情:
    • 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。
  4. 点击 OK。确认窗口将报告 CSR 已成功生成。钱包导航菜单中的证书节点现在会显示状态 Certificate: [Requested]。
  5. 返回钱包视图,选择 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 向导位于管理控制台中:

  1. 在 Oracle iPlanet 管理控制台中,打开 Server Certificates,然后点击 Request。
  2. 从 Configuration 列表中,选择证书所对应的配置。
  3. 选择将保存密钥的 Token(Cryptographic Device,密码设备)。如果密钥保存在服务器上,请选择 Internal;否则从下拉菜单中选择您的外部令牌。输入所选令牌的密码。
  4. 填写证书详情:
    • 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。请参阅完整国家代码列表。
  5. 对于 Key Type(密钥类型),选择 RSA,密钥长度选择 2048 位(或更大)。
  6. 对于 Certificate Signing Authority(CSA),选择 CA Signed。
  7. 检查您所输入的值,然后点击 Generate Request,再点击 Finish。
  8. 将新生成的 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 监听器指向该密钥库。

立即订购 SSL 证书, 可节省 10% 的费用!

快速发行, 强大加密, 99.99% 的浏览器信任度, 专业支持和 25 天退款保证. 优惠券代码 SAVE10

龙飞行的详细图像
撰写人

经验丰富的内容撰稿人, 擅长 SSL 证书. 将复杂的网络安全主题转化为清晰, 引人入胜的内容. 通过有影响力的叙述, 为提高数字安全作出贡献.

Avatar of Sergiu Rosca
Technical Review by Sergiu Rosca

Sergiu Rosca is the core web developer behind SSL Dragon. He manages the technical infrastructure, platform performance, and backend integrations that keep the site running smoothly and securely. At SSL Dragon, Sergiu shares practical insights on web development, site optimization, and technical troubleshooting.

All SSL Dragon installation guides are tested on live server environments and undergo a strict peer-review process to ensure your infrastructure remains secure. Read our full Editorial Policy.