SSL enabled in Spring Boot API

My Spring Boot API is working fine on HTTP port 8080. But I want more! I wanted a basic secure connection via HTTPS to my API. 

I found a couple of good resources about how to enable HTTPS in Spring Boot with an SSL certificate.

  1. https://www.thomasvitale.com/https-spring-boot-ssl-certificate/
  2. https://www.baeldung.com/spring-boot-https-self-signed-certificate
  3. https://stackoverflow.com/questions/50928061/certificate-for-localhost-doesnt-match-any-of-the-subject-alternative-names 
  4. https://github.com/spring-projects/spring-boot/blob/v1.4.6.RELEASE/spring-boot-samples/spring-boot-sample-tomcat-ssl/src/test/java/sample/tomcat/ssl/SampleTomcatSslApplicationTests.java 

Enable SSL usage

Resource 1 and 2 are excellent to enable https in a Spring Boot application. While running the application in IntelliJ the additional code with the keystore worked like a charm. The browser complained about the self-signed certificate as expected. But after accepting this in the browser, the application redirected incoming traffic to port 8080 to port 8443.

Embed localhost in your keypair

Unfortunately, after building the Spring Boot jar and deploying it via Jenkins in a Docker container, the application crashed. The HTTPS handshake went wrong. After trying many possible solutions I came across the third resource mentioned above. It turned out that the generated keypair should also provide localhost as a subject alternative name.

I generated another keystore, but this time I added in the parameters in Keytool:

-ext "SAN:c=DNS:localhost,IP:127.0.0.1"

I used the test of resource 4 to test if the connection was working. To make this test work I had to use DEFINED_PORT for the webEnvironment.

With this new keystore added to the repository, Jenkins was able to build a jar that didn’t produce critical exceptions and kept working in the Docker container. YAY!

Open ports in your Docker container

When you do this, make sure you also expose both ports of the Docker container. I can use this command:

sudo docker run -d --name databaseAPI --rm -p 8080:8080 -p 8443:8443 databaseapi/databaseapi-jvm

Link to my repo: 

https://github.com/Sus4nne/SpringBootDatabaseAPI 

Java software development – Digital identity project

Open Signum
De Open Signum Foundation werkt aan een Student Identity Gateway waarmee de privacy van schoolkinderen beter wordt beschermd. Op dit moment is er geen real-time privacy-by-design mechanisme op de verbinding tussen scholen en bibliotheken in Nederland. Open Signum heeft de oplossing in de vorm van een digitaal versleuteld leerling identiteitsattesteer-protocol. Dit protocol maakt het mogelijk voor een leerling om zich op een veilige en betrouwbare manier te legitimeren bij het lenen van boeken bij een bibliotheek. (lees verder: opensignum.org)

bron: opensignum.org

Werkzaamheden
Tijdens het ontwikkeltraject heb ik gebouwd aan de volgende onderdelen:

  • SOAP client uitbreiden;
  • REST client implementeren;
  • REST API endpoint toevoegen in de Gateway;
  • cryptografische digitale handtekening toevoegen aan JSON bericht;
  • cryptografisch verifiëren van de digitale handtekening in het JSON bericht;
  • opslaan en opvragen van parental consent in een private blockchain;
  • front-end ontwerpen om de functionaliteit van de Gateway te tonen;
  • opzetten van Jenkins ontwikkelstraat op Microsoft Azure VPS (inclusief Docker en Portainer).

Resultaat
Binnen 8 weken is het prototype uitgebouwd met bovengenoemde functionaliteiten. Het prototype is werkend en klaar voor demonstratie opgeleverd.

Gebruikte technieken
SOAP, REST, Java Quarkus, Docker, cryptografisch versleutelen van informatie, Angular.

Het project was de praktijkopdracht in het Java developers opleidingstraject van Additude. Ik werkte mee aan het project als liaison van het developersteam van Open Signum, niet als deelnemer van het opleidingstraject.

Kennissessie – Blockchain interactie met Java

Op 16/17 juni 2020 verzorgde ik samen met Marc Buma een kennissessie Blockchain interactie met Java voor de deelnemers van het Java developers opleidingstraject van Additude.

Blockchain, ook wel Digital Ledger Technologie (DLT) genoemd, is een tool die een developer ter beschikking moet hebben.

Opzet kennissessie

  1. DLT basics: bekend raken met het concept en de werking
  2. paper wallet workshop: met wallet app geld overmaken via een DLT
  3. code workshop: met Java interacteren met een private DLT

“DLT is een tool waar een developer
anno 2020 over moet beschikken.”

Resultaat
De workshop geeft een goed beeld van de mogelijkheden van DLT voor software projecten. De gebouwde code tijdens het derde deel biedt een duidelijk handvat voor de toepassing van DLT in Java projecten.

Tu-Go: dashboard webapplicatie

Tu-Go BV

Tu-Go

Tu-Go is werelds eerste herbruikbare beker service, die het hergebruik stimuleert onder koffie/thee drinkers door middel van rewards en feedback over de milieu impact. (lees verder: tu-go.club)

Product

Tu-Go wilde een oplossing voor het tonen van informatie naar aanleiding van hergebruikte bekers binnen een kantooromgeving. We kozen voor een dashboard in de vorm van een webapplicatie die responsive is voor tablet en mobiel.

Het dashboard wordt gevoed door een Meteor backend met een MongoDB database. De database kan eenvoudig geüpdatet worden via een google spreadsheet.

Werkzaamheden

  • bouwen dashboard;
  • serverside code voor verwerken en beschikbaar maken van gegevens uit de database voor de frontend;
  • inrichten VPS;
  • deploy van applicatie op de VPS.

Resultaat

Binnen 4 weken (doorlooptijd) was het dashboard werkend en klaar voor gebruik.

Gebruikte technieken

Meteor (Javascript), ReactJS, MongoDB, SQL.

Opdrachtgever: Tu-Go BV

ontwikkeling dApp – proof of concept met Ethereum

Het project betreft het maken van een webapp met smart contract voor een werkend proof of concept voor een systeem voor basisinkomen.

De webapp is een wallet met een betaalinterface en toont de ontvangen en gedane transacties. Voor het accorderen van een transactie maakt de webapp gebruik van MetaMask. Ook toont de webapp het saldo van het MetaMask account. Het smart contract regelt de betalingen binnen het systeem.

De webapp is gemaakt in React.js volgens Material UI en communiceert met een smart contract (geschreven in Solidity) en een MetaMask Ethereum account. Het smart contract draait op het Rinkeby test netwerk voor Ethereum.

“ontwikkeling dApp – proof of concept met Ethereum” verder lezen

Speaker at opening meetup of Lisk Center Utrecht

21 February 2019 – Founders Susanne Pieterse en Marc Buma of Blockchain030 presented a use case that was ‘out of this world’. They took the audience into outer space. What if there is a colony on the Moon or Mars, how would that work moneywise? Using physical coins or banknotes in space is way to expensive, and would you leave your money on another planet? Cryptocurrency would be suitable as an alternative way to trade value. There are complicating factors involved with using cryptocurrencies on other celestial bodies though. Susanne and Marc discussed thee different scenarios that illustrate how cryptocurrencies and blockchain can be used by future Mars and Moon colonists.

How to innovate your business with blockchain

Blockchain for Business
Blockchain for Business

You have probably read many articles stating that blockchain technology is the holy grail for everything. You have had meetings in your boardroom, agreeing that your company needs ‘to do something with blockchain’. Then what? Let me tell you what blockchain can do for your business.

Features of blockchain technology
Blockchain technology, or digital ledger technology, is a kind of database with three special features. The data stored in the blockchain is immutable. The blockchain is distributed. Thirdly, the stored data is safe, because every piece of data has a digital signature and the data can be verified through cryptography.
In the case of a Proof of Work blockchain, like the blockchain of the Bitcoin protocol, miners invest energy to verify and secure transactions in the blockchain. Each new block builds on top of the previous one. If there would be an attempt to change the previous block, it would mean that the malicious miner needs to recalculate all the succeeding blocks. This would cost an enormous additional amount of energy and computing power. Lastly, game theory takes away the economic incentive to cheat. If a party wants to cheat the system it needs more than 50% of the miners to work with this party. Staying honest usually costs less for the miners, so by staying honest they make more money.

Trust
These features make blockchain technology a system you can rely on. You can trust the system to work without the need to trust someone. The verification of the information is done by all the nodes in the network. All nodes in the network have access to the same information. The history of the information is immutable.

Effects of blockchain
The features of blockchain technology have unprecedented side effects. It is possible to do triple entry accounting. This gives you a foolproof administration, that can be audited beforehand. Tamper-proof time stamps provide foolproof evidence of, for example, the existence of a piece of information at a specific time. Smart contracts, which are programs that execute upon events recorded onto the blockchain, provide guaranteed processes.

The Blockchain State of Mind
You should look at your company’s processes with the above-mentioned features of blockchain in mind. We have experienced that blockchain technology is useful when there are more than two parties involved. These parties need a shared common truth which they can trust instead of the need to trust each other. The parties should have conflicting interests. And, automation of transactions should have added value.

Does your business need the Blockchain State of Mind? Feel free to drop me a line.

NB. My blog article was first published at NLsupervrouwen.nl to promote my presentation at the Powerful Business Women’s Network.

Spreker bij Powerful Business Women’s Network

Blockchain for Business
Blockchain for Business

Het Powerful Business Women’s Network heeft mij gevraagd op 13 december 2018 een presentatie te verzorgen over het thema “Blockchain for Business”.  Interesse? Je kunt je nog aanmelden voor het event.

Als opwarmer heeft de website NLsupervrouwen.nl mijn blog “How to innovate your business with blockchain” gepubliceerd.