を追加することにより、作業それを持っていた:
appender.smswebstart.protocol = TCP
appender.smswebstart.ssl.type = SSL
appender.smswebstart.ssl.protocol = SSL
appender.smswebstart.ssl.keystore.type=KeyStore
appender.smswebstart.ssl.keystore.location=${ctx:location}
appender.smswebstart.ssl.keystore.password=${ctx:password}
appender.smswebstart.ssl.truststore.type=TrustStore
appender.smswebstart.ssl.truststore.location=${ctx:location}
appender.smswebstart.ssl.truststore.password=${ctx:password}
これに伴う問題は、それが店の鍵はここにプレーンテキストでもできることがあります。 別の方法は、カスタムアペンダーを用意することです。
カスタムアペンダーの入手方法は次のとおりです。
@Plugin(
name = "SSLSocket",
category = "Core",
elementType = "appender",
printObject = true
)
public class SSLSocketAppender extends SocketAppender {
private static StatusLogger statusLogger = StatusLogger.getLogger();
protected SSLSocketAppender(String name, Layout<? extends Serializable> layout, Filter filter, AbstractSocketManager manager, boolean ignoreExceptions, boolean immediateFlush, Advertiser advertiser) {
super(name, layout, filter, manager, ignoreExceptions, immediateFlush, advertiser);
}
@PluginFactory
public static SSLSocketAppender createAppender(@PluginAttribute("host") String host, @PluginAttribute(value = "port", defaultInt = 0) int port, @PluginAttribute("protocol") Protocol protocol, @PluginAttribute("name") String name, @PluginElement("Layout") Layout<? extends Serializable> layout, @PluginElement("Filter") Filter filter, @PluginAttribute(value = "connectTimeoutMillis",defaultInt = 0) int connectTimeoutMillis, @PluginAliases({"reconnectionDelay"}) @PluginAttribute(value = "reconnectionDelayMillis",defaultInt = 0) int reconnectDelayMillis, @PluginAttribute(value = "immediateFail",defaultBoolean = true) boolean immediateFail) {
AbstractSocketManager manager = SslSocketManager.getSocketManager(getSSLConfig(), host, port, connectTimeoutMillis, reconnectDelayMillis, immediateFail, layout);
return new SSLSocketAppender(name, layout, filter, manager, true, true, null);
}
private static SslConfiguration getSSLConfig() {
KeyStoreConfiguration keyStoreConfig = null;
TrustStoreConfiguration trustStoreConfig = null;
try {
keyStoreConfig = KeyStoreConfiguration.createKeyStoreConfiguration(keyStorePath, keyStoreKey.toString(), keyFormat, null);
trustStoreConfig = TrustStoreConfiguration.createKeyStoreConfiguration(keyStorePath, keyStoreKey.toString(), keyFormat, null);
}
catch (StoreConfigurationException sce)
{
statusLogger.log(Level.ERROR, "Unable to configure secure socket : " + sce.getMessage());
}
SslConfiguration sslConfig = SslConfiguration.createSSLConfiguration(Protocol.SSL.toString(),keyStoreConfig, trustStoreConfig);
return sslConfig;
}
}
、代わりに設定
で「ソケット」のアペンダタイプとして「最新のSSLSocket」を使用しますが、ローカルホストと通信するときにSSLを使用する必要があるいくつかの理由がありますか? – pvg
@pvg - ちょうどcomapnyのシステムのIPアドレスをここに入れたい気がしませんでした。そこで、localhostに置き換えました。 –
最も単純なことはおそらくそれを外部化することです - 広範なセキュリティと管理パラメータを持つたくさんのオプション - ssh、stunnel、spipedなど – pvg