java 服务器 https_简单的Java HTTPS服务器

我最终使用的是:

try

{

// setup the socket address

InetSocketAddress address = new InetSocketAddress ( InetAddress.getLocalHost (), config.getHttpsPort () );

// initialise the HTTPS server

HttpsServer httpsServer = HttpsServer.create ( address, 0 );

SSLContext sslContext = SSLContext.getInstance ( "TLS" );

// initialise the keystore

char[] password = "simulator".toCharArray ();

KeyStore ks = KeyStore.getInstance ( "JKS" );

FileInputStream fis = new FileInputStream ( "lig.keystore" );

ks.load ( fis, password );

// setup the key manager factory

KeyManagerFactory kmf = KeyManagerFactory.getInstance ( "SunX509" );

kmf.init ( ks, password );

// setup the trust manager factory

TrustManagerFactory tmf = TrustManagerFactory.getInstance ( "SunX509" );

tmf.init ( ks );

// setup the HTTPS context and parameters

sslContext.init ( kmf.getKeyManagers (), tmf.getTrustManagers (), null );

httpsServer.setHttpsConfigurator ( new HttpsConfigurator( sslContext )

{

public void configure ( HttpsParameters params )

{

try

{

// initialise the SSL context

SSLContext c = SSLContext.getDefault ();

SSLEngine engine = c.createSSLEngine ();

params.setNeedClientAuth ( false );

params.setCipherSuites ( engine.getEnabledCipherSuites () );

params.setProtocols ( engine.getEnabledProtocols () );

// get the default parameters

SSLParameters defaultSSLParameters = c.getDefaultSSLParameters ();

params.setSSLParameters ( defaultSSLParameters );

}

catch ( Exception ex )

{

ILogger log = new LoggerFactory ().getLogger ();

log.exception ( ex );

log.error ( "Failed to create HTTPS port" );

}

}

} );

LigServer server = new LigServer ( httpsServer );

joinableThreadList.add ( server.getJoinableThread () );

}

catch ( Exception exception )

{

log.exception ( exception );

log.error ( "Failed to create HTTPS server on port " + config.getHttpsPort () + " of localhost" );

}

生成密钥库:

$ keytool -genkey -alias alias -keypass simulator \

-keystore lig.keystore -storepass simulator

潜在的storepass和keypass可能不同,在这种情况下ks.load和kmf.init必须分别使用storepass和keypass。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值