Error “CryptoAPI not available” when browsing Enterprise Portal

In Microsoft Dynamics AX 2012 consider the following scenario:

If, the Business Connector User account (bcproxy) specified under, System Administration > Setup > System > System service accounts is different from the user account associated with the application pool identity assigned to the web site hosting the Enterprise Portal (EP), then when a user browses the EP site, they sometimes see the following error in the web browser:

An unhandled error has occurred. To view details about this error, enable debugging in the web.config file or view the Windows event logs.

In the Application event logs on EP server, the following sequence of warnings and errors are logged:

Source:        Dynamics .NET Business Connector 6.0
Event ID:      110
Level:         Warning
Description:
6.0: 
 : An X++ exception has occurred.
CryptoAPI not available.
An error has occurred. Contact your administrator for further assistance.


Source:        Microsoft Dynamics AX Enterprise Portal
Event ID:      1000
Level:         Error
Description:
An unhandled error has occurred. To view details about this error, enable debugging in the web.config file or view the Windows event logs.

CryptoAPI not available.
An error has occurred. Contact your administrator for further assistance.

Microsoft.Dynamics.Framework.BusinessConnector

   at Microsoft.Dynamics.Framework.BusinessConnector.Session.DynamicsSession.HandleException(String message, Exception exception, HandleExceptionCallback callback)
   at Microsoft.Dynamics.Framework.BusinessConnector.Session.DynamicsObjectAdapter.Call(String methodName, Object[] paramList)
   at Microsoft.Dynamics.Framework.BusinessConnector.Proxy.WebSession.init(Object sessionHelper, Guid siteId, String localRelativeSiteUrl, Boolean isAxaptaSite, String masterClass, Boolean isPostBack, Boolean isPostSafe, Boolean isSharepoint)
   at Microsoft.Dynamics.Framework.Portal.AxWebSession.InitializeWebSession(Guid siteId, String localSiteLink, Boolean isAxaptaSite, String masterClass, Boolean isPostBack, Boolean isPostSafe, Boolean isSharePoint)
   at Microsoft.Dynamics.Framework.Portal.AxSharepointWebSession.InitWeb(HttpContext context, Boolean isPostBack)
   at Microsoft.Dynamics.Framework.BusinessConnector.Session.DynamicsSession.AddRef(ICacheContext context, Object lockobject)

To fix this either change the Business Connector Proxy user account in AX or the Application Pool Identity via SharePoint Central Administration console (and not via IIS manager).