Geoserver logo

在 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 服务器上。

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 文件时相同的密码

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".
        

配置 Jetty 服务器

#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

中央仓库:org/eclipse/jetty/jetty-distribution/9.4.48.v20220622 (maven.org)

在“下载”文件夹中创建 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)

运行以下命令:

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
        

<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

在计算机的防火墙配置中,您可能需要打开本地端口 443 或 8443。单击 “开始” > “Windows 管理工具” > “Windows Defender 高级安全防火墙”。单击 “入站规则”,然后单击 “新建规则”。选择端口。按如下方式设置:

Port 443

允许端口 443 的入站流量。

GeoServer 443 port

请命名规则并加以描述。

Geoserver rule is added

为 GeoServer 添加了新的入站规则。

现在,您可以使用 https://<域名>:<端口>/geoserver/web/ 访问安全的 GeoServer。

干杯!

2026年9月18日由陶欣发布

返回网络地理信息系统教学