Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in / Register
Toggle navigation
S
spring-boot
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
DEMO
spring-boot
Commits
258c6f11
Commit
258c6f11
authored
Sep 10, 2014
by
Vladimir Tsanev
Committed by
Andy Wilkinson
Sep 12, 2014
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add store type and store provider properties to SSL configuration
Closes gh-1545
parent
037e3a42
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
108 additions
and
0 deletions
+108
-0
appendix-application-properties.adoc
...cs/src/main/asciidoc/appendix-application-properties.adoc
+4
-0
Ssl.java
...n/java/org/springframework/boot/context/embedded/Ssl.java
+40
-0
JettyEmbeddedServletContainerFactory.java
.../embedded/jetty/JettyEmbeddedServletContainerFactory.java
+12
-0
TomcatEmbeddedServletContainerFactory.java
...mbedded/tomcat/TomcatEmbeddedServletContainerFactory.java
+12
-0
AbstractEmbeddedServletContainerFactoryTests.java
...mbedded/AbstractEmbeddedServletContainerFactoryTests.java
+40
-0
test.p12
spring-boot/src/test/resources/test.p12
+0
-0
No files found.
spring-boot-docs/src/main/asciidoc/appendix-application-properties.adoc
View file @
258c6f11
...
...
@@ -61,9 +61,13 @@ content into your application; rather pick only the properties that you need.
server.ssl.key-password=
server.ssl.key-store=
server.ssl.key-store-password=
server.ssl.key-store-provider=
server.ssl.key-store-type=
server.ssl.protocol=TLS
server.ssl.trust-store=
server.ssl.trust-store-password=
server.ssl.trust-store-provider=
server.ssl.trust-store-type=
server.tomcat.access-log-pattern= # log pattern of the access log
server.tomcat.access-log-enabled=false # is access logging enabled
server.tomcat.protocol-header=x-forwarded-proto # ssl forward headers
...
...
spring-boot/src/main/java/org/springframework/boot/context/embedded/Ssl.java
View file @
258c6f11
...
...
@@ -36,10 +36,18 @@ public class Ssl {
private
String
keyStorePassword
;
private
String
keyStoreType
;
private
String
keyStoreProvider
;
private
String
trustStore
;
private
String
trustStorePassword
;
private
String
trustStoreType
;
private
String
trustStoreProvider
;
private
String
protocol
=
"TLS"
;
public
ClientAuth
getClientAuth
()
{
...
...
@@ -90,6 +98,22 @@ public class Ssl {
this
.
keyStorePassword
=
keyStorePassword
;
}
public
String
getKeyStoreType
()
{
return
this
.
keyStoreType
;
}
public
void
setKeyStoreType
(
String
keyStoreType
)
{
this
.
keyStoreType
=
keyStoreType
;
}
public
String
getKeyStoreProvider
()
{
return
this
.
keyStoreProvider
;
}
public
void
setKeyStoreProvider
(
String
keyStoreProvider
)
{
this
.
keyStoreProvider
=
keyStoreProvider
;
}
public
String
getTrustStore
()
{
return
this
.
trustStore
;
}
...
...
@@ -106,6 +130,22 @@ public class Ssl {
this
.
trustStorePassword
=
trustStorePassword
;
}
public
String
getTrustStoreType
()
{
return
this
.
trustStoreType
;
}
public
void
setTrustStoreType
(
String
trustStoreType
)
{
this
.
trustStoreType
=
trustStoreType
;
}
public
String
getTrustStoreProvider
()
{
return
this
.
trustStoreProvider
;
}
public
void
setTrustStoreProvider
(
String
trustStoreProvider
)
{
this
.
trustStoreProvider
=
trustStoreProvider
;
}
public
String
getProtocol
()
{
return
this
.
protocol
;
}
...
...
spring-boot/src/main/java/org/springframework/boot/context/embedded/jetty/JettyEmbeddedServletContainerFactory.java
View file @
258c6f11
...
...
@@ -175,6 +175,12 @@ public class JettyEmbeddedServletContainerFactory extends
throw
new
EmbeddedServletContainerException
(
"Could not find key store '"
+
ssl
.
getKeyStore
()
+
"'"
,
ex
);
}
if
(
ssl
.
getKeyStoreType
()
!=
null
)
{
factory
.
setKeyStoreType
(
ssl
.
getKeyStoreType
());
}
if
(
ssl
.
getKeyStoreProvider
()
!=
null
)
{
factory
.
setKeyStoreProvider
(
ssl
.
getKeyStoreProvider
());
}
}
private
void
configureSslTrustStore
(
SslContextFactory
factory
,
Ssl
ssl
)
{
...
...
@@ -191,6 +197,12 @@ public class JettyEmbeddedServletContainerFactory extends
"Could not find trust store '"
+
ssl
.
getTrustStore
()
+
"'"
,
ex
);
}
}
if
(
ssl
.
getTrustStoreType
()
!=
null
)
{
factory
.
setTrustStoreType
(
ssl
.
getTrustStoreType
());
}
if
(
ssl
.
getTrustStoreProvider
()
!=
null
)
{
factory
.
setTrustStoreProvider
(
ssl
.
getTrustStoreProvider
());
}
}
/**
...
...
spring-boot/src/main/java/org/springframework/boot/context/embedded/tomcat/TomcatEmbeddedServletContainerFactory.java
View file @
258c6f11
...
...
@@ -290,6 +290,12 @@ public class TomcatEmbeddedServletContainerFactory extends
throw
new
EmbeddedServletContainerException
(
"Could not find key store "
+
ssl
.
getKeyStore
(),
ex
);
}
if
(
ssl
.
getKeyStoreType
()
!=
null
)
{
protocol
.
setKeystoreType
(
ssl
.
getKeyStoreType
());
}
if
(
ssl
.
getKeyStoreProvider
()
!=
null
)
{
protocol
.
setKeystoreProvider
(
ssl
.
getKeyStoreProvider
());
}
}
private
void
configureSslTrustStore
(
AbstractHttp11JsseProtocol
<?>
protocol
,
Ssl
ssl
)
{
...
...
@@ -304,6 +310,12 @@ public class TomcatEmbeddedServletContainerFactory extends
}
}
protocol
.
setTruststorePass
(
ssl
.
getTrustStorePassword
());
if
(
ssl
.
getTrustStoreType
()
!=
null
)
{
protocol
.
setTruststoreType
(
ssl
.
getTrustStoreType
());
}
if
(
ssl
.
getTrustStoreProvider
()
!=
null
)
{
protocol
.
setTruststoreProvider
(
ssl
.
getTrustStoreProvider
());
}
}
/**
...
...
spring-boot/src/test/java/org/springframework/boot/context/embedded/AbstractEmbeddedServletContainerFactoryTests.java
View file @
258c6f11
...
...
@@ -341,6 +341,46 @@ public abstract class AbstractEmbeddedServletContainerFactoryTests {
equalTo
(
"test"
));
}
@Test
public
void
pkcs12KeyStoreAndTrustStore
()
throws
Exception
{
FileCopyUtils
.
copy
(
"test"
,
new
FileWriter
(
this
.
temporaryFolder
.
newFile
(
"test.txt"
)));
AbstractEmbeddedServletContainerFactory
factory
=
getFactory
();
factory
.
setDocumentRoot
(
this
.
temporaryFolder
.
getRoot
());
Ssl
ssl
=
new
Ssl
();
ssl
.
setKeyStore
(
"src/test/resources/test.p12"
);
ssl
.
setKeyStorePassword
(
"secret"
);
ssl
.
setKeyStoreType
(
"pkcs12"
);
ssl
.
setTrustStore
(
"src/test/resources/test.p12"
);
ssl
.
setTrustStorePassword
(
"secret"
);
ssl
.
setTrustStoreType
(
"pkcs12"
);
ssl
.
setClientAuth
(
ClientAuth
.
NEED
);
factory
.
setSsl
(
ssl
);
this
.
container
=
factory
.
getEmbeddedServletContainer
();
this
.
container
.
start
();
KeyStore
keyStore
=
KeyStore
.
getInstance
(
"pkcs12"
);
keyStore
.
load
(
new
FileInputStream
(
new
File
(
"src/test/resources/test.p12"
)),
"secret"
.
toCharArray
());
SSLConnectionSocketFactory
socketFactory
=
new
SSLConnectionSocketFactory
(
new
SSLContextBuilder
()
.
loadTrustMaterial
(
null
,
new
TrustSelfSignedStrategy
())
.
loadKeyMaterial
(
keyStore
,
"secret"
.
toCharArray
()).
build
());
HttpClient
httpClient
=
HttpClients
.
custom
().
setSSLSocketFactory
(
socketFactory
)
.
build
();
HttpComponentsClientHttpRequestFactory
requestFactory
=
new
HttpComponentsClientHttpRequestFactory
(
httpClient
);
assertThat
(
getResponse
(
getLocalUrl
(
"https"
,
"/test.txt"
),
requestFactory
),
equalTo
(
"test"
));
}
@Test
public
void
sslNeedsClientAuthenticationSucceedsWithClientCertificate
()
throws
Exception
{
...
...
spring-boot/src/test/resources/test.p12
0 → 100644
View file @
258c6f11
File added
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment