OpenSSL

Ported to the web browser with WebAssembly

Background

The basis of this application is the open source software OpenSSL. OpenSSL is a widely used toolkit and is used, among other things, to ensure secure data transmission on the Internet through implementations of the SSL/TLS encryption protocols.

In addition, OpenSSL has a command line interface (CLI) that provides various cryptographic tools, including [1]:

  • Encryption and decryption
  • Hash value calculation
  • Cryptographic key generation
  • Creation and management of digital certificates
  • SSL/TLS client and server testing

Operating OpenSSL

The OpenSSL program can be operated via its Command Line Interface (CLI) which means the terminal. The terminal accepts textual commands, for example openssl genrsa 1024 (which generates a 1024 bit long RSA key). Commands always start with openssl, followed by which function you want OpenSSL to execute, and then usually some parameters which differ depending on the function.

In general, commands always look like this:

openssl <function> [parameters]

The angle brackets mean that the name of the function is variable. So you can insert different values for it. The square brackets mean that the parameters are optional, they always depend on the function.

You can get a list of all functions using the help command:

openssl help

You can get a list of possible parameters for each function if you write -help behind it:

openssl <function> -help

Pro Tipp: In the documentation of OpenSSL there are also explanations and examples for all functions and their parameters.

It is also possible to connect the outputs of several commands by using so-called 'pipes' (a vertical line: '|'). This transfers the output of the left command as input to the right command. For example, to colorize the output, you can write lolcat behind it:

openssl genrsa 1024 | lolcat

In general it would look like this, so you can use any commands you like:

<befehl1> | <befehl2>


About this application

This application allows to use OpenSSL directly in the browser. With the help of the graphical user interface (GUI), the sometimes complex OpenSSL commands can be easily clicked together.

For this purpose, OpenSSL (version 3.0 written in C) was compiled to WebAssembly using Emscripten. WebAssembly is assembler code that can be executed in the browser. For more information, see the GitHub repository or the underlying bachelor thesis.


Files tab

The Files tab displays the files currently present in the WebAssembly virtual file system after each command. You can also select files from your device and use them in commands.


References

[1] OpenSSL (GitHub): https://github.com/openssl/openssl