So, I've generated the certificates properly and MPOS worked fine for a period of time, then suddenly it stopped working and been receiving the following message "The revocation function was unable to check revocation because the revocation server was offline.".
The complete message is like this CommerceRuntimeException was thrown.Microsoft.Dynamics.Commerce.Runtime.UserAuthenticationException: An error occurred during logon. ---> Microsoft.Dynamics.Commerce.Runtime.CommunicationException: Exception while calling invoke method RetailServerStaffLogOn: The X.509 certificate CN=ROWSIC05, O=Iulian Dev Machine, S=BUC, C=RO chain building failed. The certificate that was used has a trust chain that cannot be verified. Replace the certificate or change the certificateValidationMode. The revocation function was unable to check revocation because the revocation server was offline.
As the message is saying, your problem is actually the revocation list which can't be retrieved. If you open the certificate's properties you are using for your Async server / Real time server in your Certificates console, and go to the CRL Distribution Point you can see where your list should be available:
CRL Distribution Point
Distribution Point Name:
I think you won't be able to browse to that URL and the fix is of course to copy your CRL generated file to the server (if this is not the case, see possible issue following). Once you do that your browser will be able to hit that URL and if you open the file you will get another set of information; the most important one is about the Expiration Date (called Effective Date) until when that file is valid. This could represent a second issue, like in my case: I generated the files, and the period passed, so the CRL file was not valid. Simple fix, just regenerate the file.