DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Newsletter
Log In / Join
Refcards Trend Reports
Events Video Library
Refcards
Trend Reports

Events

View Events Video Library

Zones

Culture and Methodologies Agile Career Development Methodologies Team Management
Data Engineering AI/ML Big Data Data Databases IoT
Software Design and Architecture Cloud Architecture Containers Integration Microservices Performance Security
Coding Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Partner Zones Build AI Agents That Are Ready for Production
Culture and Methodologies
Agile Career Development Methodologies Team Management
Data Engineering
AI/ML Big Data Data Databases IoT
Software Design and Architecture
Cloud Architecture Containers Integration Microservices Performance Security
Coding
Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance
Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Partner Zones
Build AI Agents That Are Ready for Production

Who owns code nobody has read? Explore accountability in agentic development in this December 3 webinar.

Related

  • Actuator Enhancements: Spring Framework 6.2 and Spring Boot 3.4
  • How Spring Boot Starters Integrate With Your Project
  • A Practical Guide to Creating a Spring Modulith Project
  • Structured Logging in Spring Boot 3.4 for Improved Logs

Trending

  • How to Evaluate Coding Agents With Harbor Framework, Python, Docker
  • The Self-Hosting Math Changed While We Were Still Arguing About Sovereignty
  • PWA on iOS, Part 3: Chrome on iPhone Is WebKit Too. How One Engine Sets the Rules for PWAs on iOS
  • Beyond @Transactional: Solving the Dual-Write Problem in Distributed Microservices

Draft This article hasn't been published, so readers can't see it.

In moderation This article is waiting for review, so readers can't see it yet.

Deleted This article has been deleted, so readers can't see it.

  1. DZone
  2. Coding
  3. Frameworks
  4. How to Enable HTTP/HTTPS on Spring Boot [Snippet]

How to Enable HTTP/HTTPS on Spring Boot [Snippet]

Learn how to enable HTTP and HTTPS on your Spring Boot applications with this tutorial on using the SSL layer for application configuration.

By 
Ganesh Sahu
·
Updated Aug. 07, 18 · Code Snippet
Post on X (opens in a new tab) Share on LinkedIn (opens in a new tab)
66.2K Views

Join the DZone community Save articles, join the discussion, and download Refcards and Trend Reports with a free account.

Join for free Already a member? Log in

You can configure Spring Boot services to be accessed over the SSL layer. And, the configuration can be done in the application configuration YML or property file. If there is ever a need to support the services so that they can be accessed in both the HTTP and HTTPS layer, you will have to plug in an additional connector.

By default, it allows only one connector to use the properties. The key to supporting both connectors would require some customization.

Let's take a look at the following interface:

 org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer.

This is the strategy interface for customizing auto-configured embedded servlet containers.
Any beans of this type will get a callback with the container factory before the container itself is started, so you can set the port, address, error pages, etc.

  • Create a bean that returns an instance of EmbeddedServletContainerCustomizer, overriding the customize method. Inside the customize method, we need to add additional support for the connectors. 

@Configuration
public class EmbeddedTomcatConfig {

    @Value("${http.port}")
    private int httpPort;

    @Bean
    public EmbeddedServletContainerCustomizer customizeTomcatConnector() {
        return new EmbeddedServletContainerCustomizer() {
            @Override
            public void customize(ConfigurableEmbeddedServletContainer container) {
                if (container instanceof TomcatEmbeddedServletContainerFactory) {
                    TomcatEmbeddedServletContainerFactory containerFactory =
                            (TomcatEmbeddedServletContainerFactory) container;

                    Connector connector = new Connector(TomcatEmbeddedServletContainerFactory.DEFAULT_PROTOCOL);
                    connector.setPort(httpPort);
                    containerFactory.addAdditionalTomcatConnectors(connector);
                }
            }
        };
    }

}


  • Next, we need to establish the application.properties:

http.port=8081
server.port=8082
server.ssl.key-password=****yourjkspassword***
server.ssl.key-store=classpath:applicationssl.jks
server.ssl.key-store-type=JKS


Now, your application should support both HTTP (8081) and HTTPS (8082).

The JKS should be placed in the application classpath, for example, the /src/resources  folder.

You can create self-signed certificates using the key-tool for testing purposes.

Please refer to how to convert SSL certificates to JKS here. 

I have shared the configuration for a Tomcat-embedded container. This code can always be tweaked for Jetty. 

Happy coding!

Spring Framework Spring Boot

Opinions expressed by DZone contributors are their own.

Related

  • Actuator Enhancements: Spring Framework 6.2 and Spring Boot 3.4
  • How Spring Boot Starters Integrate With Your Project
  • A Practical Guide to Creating a Spring Modulith Project
  • Structured Logging in Spring Boot 3.4 for Improved Logs

Partner Resources

×

Comments

Loading comments

The comments didn't load

Please try again in a moment.

Likes

Loading

The next likes didn't load. Please try again.

The likes didn't load

Please try again in a moment.

See who liked this

Log in or join DZone for free to see who liked this article.

Log in Join for free
  • ⭐ Must Read: articles/enable httphttps spring boot - Latest Analysis
  • ⭐ Must Read: articles/enable httphttps spring boot - Latest Analysis
  • ⭐ Must Read: articles/enable httphttps spring boot - Latest Analysis

ABOUT US

  • About DZone
  • Support and feedback
  • Community research

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Core Program
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 3343 Perimeter Hill Drive
  • Suite 215
  • Nashville, TN 37211
  • [email protected]

Let's be friends:

  • ⭐ Must Read: articles/enable httphttps spring boot - Latest Analysis
  • ⭐ Must Read: articles/enable httphttps spring boot - Latest Analysis
  • ⭐ Must Read: articles/enable httphttps spring boot - Latest Analysis