I have a website on example.com
, and a WebSocket server on example-websocket-server.com
.
Each have an SSL certificate so that I can access them from https://
I am using the websocket server as a websocket server for all the other websites, including example.com
(there are more websites). However the wss://
connection fails (ws://
works).
The websocket server uses Laravel-Websocket as the server and it asks for a path to the PEM certificate: https://beyondco.de/docs/laravel-websockets/basic-usage/ssl#configuration:
/*
* Path to local certificate file on filesystem. It must be a PEM encoded file which
* contains your certificate and private key. It can optionally contain the
* certificate chain of issuers. The private key also may be contained
* in a separate file specified by local_pk.
*/
So for that PEM certificate I used the same certificate as the https://
certificate I am using on IIS
However I have a few issues - the certificate I am using on IIS was a .pfx
file, with a given password string.
In order to create the PEM file used for the websocket server's wss
connection, I first exported the .pfx
to the PKCS7 file (.p7b
), and then used OpenSSL to convert it to a .cer
file. When I change the extension from .cer
to .pem
the file content look like that:
-----BEGIN PKCS7-----
[..long string..]
-----END PKCS7-----
(I tried using the file both as a .cer
and .pem
just in case)
But now the wss://
fails, and there is no debug information so I have no idea what is the cause. And in my case it can be multiple:
- I am using the wrong certificate
- The conversion I did from the
.pfx
to the .cer
/.pem
is wrong
- There is cross-origin restriction on my app side (Laravel) and that's the problem because the websockets server and the website are on different URLs (but less likely because it works with
ws
)
- Some configuration for WSS in IIS (Although normal
ws://
connection worked)
- PKCS7 is not compatible and I need PKCS12?
Or other thing I did not think of yet