码头上的客户端证书身份验证(karaf)
client-certificate authentication on jetty (karaf)
我需要在码头服务器上使用证书进行客户端身份验证。
我已在 Tomcat 上使用以下方法完成此操作:
<Connector
protocol="org.apache.coyote.http11.Http11Protocol"
port="8443" maxThreads="200"
minSpareThreads="5"
enableLookups="true" disableUploadTimeout="true"
acceptCount="100"
scheme="https" secure="true" SSLEnabled="true"
keystoreFile="D:\certificates\certs\server.jks" keystoreType="JKS" keystorePass="password"
truststoreFile="D:\certificates\certs\trust_store.jks" truststoreType="JKS" truststorePass="password"
clientAuth="true"
sslProtocol="TLS"/>
但是我想在 karaf 上做,所以我知道我可以通过在 jetty.xml 上添加以下内容来做到这一点:
<Call name="addConnector">
<Arg>
<New class="org.eclipse.jetty.server.ssl.SslSelectChannelConnector">
<Arg>
<New class="org.eclipse.jetty.http.ssl.SslContextFactory">
<Set name="KeyStore">./etc/keystores/server.jks</Set>
<Set name="KeyStorePassword">password</Set>
<Set name="KeyManagerPassword">password</Set>
<Set name="TrustStore">./etc/keystores/trust_store.jks</Set>
<Set name="TrustStorePassword">password</Set>
</New>
</Arg>
<Set name="port">8443</Set>
<Set name="maxIdleTime">30000</Set>
</New>
</Arg>
并在 org.ops4j.pax.web.xml 上关注:
org.osgi.service.http.port=8181
org.osgi.service.http.port.secure=8443
org.osgi.service.http.secure.enabled=true
org.ops4j.pax.web.ssl.keystore=./etc/keystores/keystore.jks
org.ops4j.pax.web.ssl.password=password
org.ops4j.pax.web.ssl.keypassword=password
#org.ops4j.pax.web.ssl.clientauthwanted=false
org.ops4j.pax.web.ssl.clientauthneeded=true
但它在 karaf 上不起作用,它不要求客户端证书。它仅使用 server-cert-authentication 在 https 上工作。
我错过了什么?
需要 2 处更改:
- 将 org.ops4j.pax.web.xml 文件重命名为 org.ops4j.pax.web.cfg
- 已将
org.ops4j.pax.web.config.file=./etc/jetty.xml
添加到组织。ops4j.pax.web.cfg
我需要在码头服务器上使用证书进行客户端身份验证。
我已在 Tomcat 上使用以下方法完成此操作:
<Connector
protocol="org.apache.coyote.http11.Http11Protocol"
port="8443" maxThreads="200"
minSpareThreads="5"
enableLookups="true" disableUploadTimeout="true"
acceptCount="100"
scheme="https" secure="true" SSLEnabled="true"
keystoreFile="D:\certificates\certs\server.jks" keystoreType="JKS" keystorePass="password"
truststoreFile="D:\certificates\certs\trust_store.jks" truststoreType="JKS" truststorePass="password"
clientAuth="true"
sslProtocol="TLS"/>
但是我想在 karaf 上做,所以我知道我可以通过在 jetty.xml 上添加以下内容来做到这一点:
<Call name="addConnector">
<Arg>
<New class="org.eclipse.jetty.server.ssl.SslSelectChannelConnector">
<Arg>
<New class="org.eclipse.jetty.http.ssl.SslContextFactory">
<Set name="KeyStore">./etc/keystores/server.jks</Set>
<Set name="KeyStorePassword">password</Set>
<Set name="KeyManagerPassword">password</Set>
<Set name="TrustStore">./etc/keystores/trust_store.jks</Set>
<Set name="TrustStorePassword">password</Set>
</New>
</Arg>
<Set name="port">8443</Set>
<Set name="maxIdleTime">30000</Set>
</New>
</Arg>
并在 org.ops4j.pax.web.xml 上关注:
org.osgi.service.http.port=8181
org.osgi.service.http.port.secure=8443
org.osgi.service.http.secure.enabled=true
org.ops4j.pax.web.ssl.keystore=./etc/keystores/keystore.jks
org.ops4j.pax.web.ssl.password=password
org.ops4j.pax.web.ssl.keypassword=password
#org.ops4j.pax.web.ssl.clientauthwanted=false
org.ops4j.pax.web.ssl.clientauthneeded=true
但它在 karaf 上不起作用,它不要求客户端证书。它仅使用 server-cert-authentication 在 https 上工作。
我错过了什么?
需要 2 处更改:
- 将 org.ops4j.pax.web.xml 文件重命名为 org.ops4j.pax.web.cfg
- 已将
org.ops4j.pax.web.config.file=./etc/jetty.xml
添加到组织。ops4j.pax.web.cfg