在 GeoServer 上启用 HTTPS
以下是如何为 GeoServer 自带的 Jetty Server 安装 SSL 证书的简短教程。
免责声明:以下步骤均在 Windows 操作系统中执行和测试。生成 PFX 证书
您可以使用 PowerShell 以管理员身份创建自签名证书并将其导出为 pfx 文件。为此,请运行以下命令:
$cert = New-SelfSignedCertificate -certstorelocation cert:\localmachine\my -dnsname <domain name>
举个例子:
$cert = New-SelfSignedCertificate -certstorelocation cert:\localmachine\my -dnsname g.umd.me.uk
然后:
$pwd = ConvertTo-SecureString -String 'password' -Force -AsPlainText
$path = 'cert:\localMachine\my\' + $cert.thumbprint
在 C 盘下创建 certs 文件夹,然后运行:
Export-PfxCertificate -cert $path -FilePath C:\certs\powershellcert.pfx -Password $pwd
使用以下命令安装证书(Import-PfxCertificate (pki) | Microsoft Learn):
$mypwd = Get-Credential -UserName '请在下方输入密码' -Message '请在下方输入密码'
$params = @{
FilePath = 'C:\certs\powershellcert.pfx'
CertStoreLocation = 'cert:\localmachine\my'
Password = $mypwd.Password
}
Import-PfxCertificate @params
生成密钥库文件
Jetty 需要密钥库文件来进行 SSL 配置。因此,请将 PFX 文件转换为 JKS 密钥库,然后将其安装到 GeoServer 自带的 Jetty 服务器上。
- 进入 JDK 的“bin”文件夹,然后在命令提示符中运行以下命令:
keytool -importkeystore -srckeystore C:\certs\powershellcert.pfx -srcstoretype pkcs12 -destkeystore C:\certs\keystore -deststoretype JKS
示例输出:
PS C:\Users\Administrator> keytool -importkeystore -srckeystore C:\certs\powershellcert.pfx -srcstoretype pkcs12 -destkeystore C:\certs\keystore -deststoretype JKS 正在将密钥库 C:\certs\powershellcert.pfx 导入到 C:\certs\keystore... 请输入目标密钥库密码: 重新输入新密码: 请输入源密钥库密码: 别名 te-75440268-ad52-462b-a4cc-541b73ce439b 的条目已成功导入。 导入命令已完成:成功导入 1 条记录,失败或取消 0 条记录 警告: JKS密钥库使用专有格式。建议迁移到PKCS12,这是一种行业标准格式。 "keytool -importkeystore -srckeystore C:\certs\keystore -destkeystore C:\certs\keystore -deststoretype pkcs12".
提示:请使用与生成 pfx 文件时相同的密码
- 现在,执行以下命令来验证创建的密钥库是否为 PrivateKeyEntry。
keytool -list -keystore C:\certs\keystore -storepass password
示例输出:
PS C:\Users\Administrator\Downloads\jetty> keytool -list -keystore C:\certs\keystore -storepass password 密钥库类型:jks 密钥库提供商:SUN 您的密钥库包含 1 个条目 te-41a518cc-d63f-4127-aeb1-41b1b38e03d5,2026年8月19日,私钥条目, 证书指纹(SHA-256):D0:71:4A:B3:D0:04:BC:E8:B4:38:9E:24:8D:61:CF:EB:79:AF:29:74:E2:BB:A8:23:84:A2:F6:6F:03:DC:28:45 警告: JKS密钥库使用专有格式。建议迁移到PKCS12,这是一种行业标准格式。 "keytool -importkeystore -srckeystore C:\certs\keystore -destkeystore C:\certs\keystore -deststoretype pkcs12".
- 将生成的密钥库复制到 %GEOSERVER_HOME%\etc\keystore
配置 Jetty 服务器
- 打开 %GEOSERVER_HOME% 目录下的 start.ini 文件,并将以下内容复制到 --module=http 之后。
#SSL
--module=ssl
jetty.ssl.port=8443
jetty.sslContext.keyStorePath=etc/keystore
jetty.sslContext.trustStorePath=etc/keystore
jetty.sslContext.keyStorePassword=password
jetty.sslContext.keyManagerPassword=password
jetty.sslContext.trustStorePassword=password
--module=https
jetty.httpConfig.securePort=8443
- 从 Maven Eclipse 站点下载 jetty-distribution 文件(版本必须与 GeoServer 中的版本相同——GeoServer 2.21 和 2.22 使用 Jetty 9.4.48),然后解压其内容。
在“下载”文件夹中创建 jetty 文件夹,将 zip 文件移动到该文件夹中,然后在 PowerShell 中将其解压缩:
Expand-Archive -Path "C:\Users\azureuser\Downloads\jetty\jetty-distribution-9.4.48.v20220622.zip" -DestinationPath "C:\Users\azureuser\Downloads\jetty"
**提示:您可以在 %GEOSERVER_HOME%/lib 目录中查看 Jetty 版本。
(需要 3 个文件——ssl.mod、jetty-ssl-context.xml 和 jetty-util-xx.jar)
- 将 /modules 目录下的 ssl.mod 文件复制到 %GEOSERVER_HOME%\modules 目录下。
- 将 /etc 目录下的 jetty-ssl-context.xml 文件复制到 %GEOSERVER_HOME%\etc 目录。
- 将 lib 目录中的 jetty-util-xxxx.jar 文件复制到机器上的任意路径,然后在命令提示符中进入到该路径。
运行以下命令:
java -cp jetty-util-<JettyVersion>.jar org.eclipse.jetty.util.security.Password password
以获取混淆后的密码(OBF:….)
举个例子:
java -cp jetty-util-9.4.48.v20220622.jar org.eclipse.jetty.util.security.Password password
示例输出:
PS C:\Users\Administrator\Downloads\jetty> java -cp jetty-util-9.4.48.v20220622.jar org.eclipse.jetty.util.security.Password password
2026-09-13 18:42:48.013:INFO::main: 日志初始化完成,耗时 444 毫秒,日志对象为 org.eclipse.jetty.util.log.StdErrLog
password
OBF:1v2j1uum1xtv1zej1zer1xtn1uvk1v1v
MD5:5f4dcc3b5aa765d61d8327deb882cf99
- 复制 OBF 密码并替换 jetty-ssl-context.xml 中现有的 OBF 密码。
<Set name="KeyStorePassword"><Property name="jetty.sslContext.keyStorePassword" deprecated="jetty.keystore.password" default="OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4"/></Set>
<Set name="KeyManagerPassword"><Property name="jetty.sslContext.keyManagerPassword" deprecated="jetty.keymanager.password" default="OBF:1u2u1wml1z7s1z7a1wnl1u2g"/></Set>
改为:
<Set name="KeyStorePassword"><Property name="jetty.sslContext.keyStorePassword" deprecated="jetty.keystore.password" default="OBF:1v2j1uum1xtv1zej1zer1xtn1uvk1v1v"/></Set>
<Set name="KeyManagerPassword"><Property name="jetty.sslContext.keyManagerPassword" deprecated="jetty.keymanager.password" default="OBF:1v2j1uum1xtv1zej1zer1xtn1uvk1v1v"/></Set>
**提示:如果需要更改端口,请在 etc 文件夹中的 jetty-ssl.xml(jetty.ssl.port)文件中进行更改:
<Set name="port"><Property name="jetty.ssl.port" deprecated="ssl.port" default="8443" /></Set>
改为:
<Set name="port"><Property name="jetty.ssl.port" deprecated="ssl.port" default="443" /></Set>
同时修改 %GEOSERVER_HOME% 目录下的 start.ini 文件
#SSL
--module=ssl
jetty.ssl.port=443
jetty.sslContext.keyStorePath=etc/keystore
jetty.sslContext.trustStorePath=etc/keystore
jetty.sslContext.keyStorePassword=password
jetty.sslContext.keyManagerPassword=password
jetty.sslContext.trustStorePassword=password
--module=https
jetty.httpConfig.securePort=443
- 重启 GeoServer 服务,方法是停止并重新启动 GeoServer。您也可以在 Services.msc 中重启,或者使用 %GEOSERVER_HOME% 目录下的 start.bat 文件重启。
在计算机的防火墙配置中,您可能需要打开本地端口 443 或 8443。单击 “开始” > “Windows 管理工具” > “Windows Defender 高级安全防火墙”。单击 “入站规则”,然后单击 “新建规则”。选择端口。按如下方式设置:

允许端口 443 的入站流量。

请命名规则并加以描述。

为 GeoServer 添加了新的入站规则。
现在,您可以使用 https://<域名>:<端口>/geoserver/web/ 访问安全的 GeoServer。
干杯!
2026年9月18日由陶欣发布