Wenn Sie hierherkommen, weil Sie gerade einen neuen Webclient/Webservice einrichten, und Sie die Fehlermeldung „Fehler beim Zugriff auf die Website Type: System:Fehler beim Zugriff auf die Website Type: System.UnauthorizedAccessException bekommen, dann scrollen Sie bitte schnell weiter runter, da gibt es die Lösung.
ACHTUNG! Brauchen Sie überhaupt die Clientdienste, welche ein Zertifikat verlangt? Vielleicht brauchen Sie nur die SOAP oder OData oder die ManagementConsole für NavUserPassword benötigen, dann schalten Sie einfach die Clientservices aus, und schon brauchen Sie kein Zertifikat und kein CertificateThumbNail!
El cliente web de Business Central o Navision ha crecido desde la versión 2018. Y sigue creciendo. Desde entonces, apenas ha habido una buena razón para utilizar el cliente de Windows. Por lo tanto, desde Business Central 2019 (Nav Fall Release 2018) (BC15) ya no existe un cliente Windows. Simplemente abra un navegador, introduzca la URL y empiece a trabajar con Navision o Business Central inmediatamente. Por cierto, incluso más allá de las fronteras de la empresa: ¡el cliente web sustituye completamente el acceso remoto como cliente RDP (Remote Desktop Protocol), Teamviewer, VNC y otras tecnologías de acceso remoto!
Dentro de un dominio de Windows, el inicio de sesión a través de Windows sigue siendo el método más cómodo y Navision lo admite de serie. Simplemente instale Navision y Business Central como se describe aquí y ya está. Especialmente con el cliente web. Si el navegador le pide datos de acceso: simplemente introduzca los datos de acceso de Windows y listo.
Pero, ¿y si quieres utilizar el cliente de forma remota, fuera de una VPN, fuera de un dominio de Windows? Entonces no hay que introducir datos de acceso a Windows. Nada más fácil: Cambie Navision al tipo de credencial NavUserPassword y... ¡ nada funciona!


La solución se encuentra rápidamente en el Visor de sucesos: ¡Navision requiere ahora un certificado! El visor de sucesos informa del error:
Instancia del servidor: xxxx
Tipo: Microsoft.Dynamics.Nav.Types.NavConfigurationException
SuprimirMensaje: False
ContieneInformaciónPersonalOrRestringida: Falso
DiagnósticoSuprimir: Falso
MensajeSinInformaciónPrivada: No se ha encontrado el certificado con la huella digital en la memoria de CurrentUser o LocalMachine.
Microsoft.Dynamics.Nav.Types.CertificateHelper.FindCertificateFromThumbprint(String certificateThumbprint)
Microsoft quiere proteger aquí al usuario de sí mismo, y en esta constelación sólo autentica a través de un certificado. Independientemente de si quieres o necesitas este nivel de seguridad adicional. Así que arremángate y listo. También muy fácil desde 2018 gracias a los nuevos scripts de Powershell. ¡El baile de brujas con makecert.exe ya no es necesario!
¡Atención! ¡Importante! La siguiente generación de certificados crea un certificado autofirmado, tal y como lo hacía makecert.exe anteriormente. Esto funciona para la tarea aquí descrita. Sin embargo, ¡no funciona si desea publicar en Internet los servicios web de Navision o Business Central, que están muy relacionados con el tema! En este caso, necesita absolutamente un certificado firmado públicamente, como puede obtener de varios emisores y también de LetsEncrypt.
Nota: También puede utilizar cualquier otro certificado disponible, en cuyo caso simplemente omita los pasos para crear un nuevo certificado autofirmado. De lo contrario, lo más sencillo es realizar los siguientes pasos en el servidor de base de datos Business Central o Navision.
Achtung! der hier folgende Teil ist veraltet. Inzwischen (so ab Windows 11 und Windows Server 2022) gibt es ein neues eingebautes Comandlet, es ist NICHT mehr nötig, irgendetwas vorher von irgendwoher herunterzuladen! Springen Sie bitte weiter runter auf „Zertifikat mit neuem Windows erstellen“
Preparación: Necesitas el script Powershell New-SelfSignedCertificateEx, que puedes encontrar aquí :

descargue y descomprima este archivo, por ejemplo en c:\Temp. He adjuntado el script aquí pero por supuesto recomiendo descargarlo directamente de Microsoft.
- Inicie Powershell en modo administrador
- cambie a c:\temp (o donde haya guardado el script)
(Consejo: puede escribir sólo las primeras letras de la mayoría de los comandos y luego completarlos con la tecla TAB)
Set-ExecutionPolicy RemoteSigned
Confirme la consulta con Y - Importar módulos.\NNNuevo-CertificadoAutofirmadoEx.ps1
- New-SelfSignedCertificateEx -Subject „CN=Navision-Service“ -IsCA $True -Exportable -StoreLocation LocalMachine -FriendlyName „NavUserAndPassword“ -NotAfter $([datetime]::now.AddYears(5))
Por supuesto, puede cambiar los marcadores de posición para el nombre del certificado y la contraseña como desee.
"Navision service" se refiere al nombre del servidor. Al final de estas instrucciones encontrará una opción para cambiar este nombre a través de los archivos de configuración. Recomendación: Introduzca aquí la DnsIdentiy correcta¡! (nombre del ordenador al instalar Business Central o Navision).
Zertifikat mit neuem Windows erstellen
Das Scriplet / Comandlet heist nun
$certname = „Navision-Api“ ## Replace {certificateName} with your Nav-Service Instance Name
$cert = New-SelfSignedCertificate -Subject „CN=$Navision-Api“ -CertStoreLocation „Cert:\CurrentUser\My“ -KeyExportPolicy Exportable -KeySpec Signature -KeyLength 2048 -KeyAlgorithm RSA -HashAlgorithm SHA256
Sie finden dieses Zertifikat nun über (Startmenü ->) certmgr.msc Zertifikate Aktueller Benutzer/Eigene Zertifikate/Zertifikate
Verschieben Sie dieses Zertifikat nun in den Zertifikatordner „Vertrauenswürdige Stammzertifikate/Zertifikate“:

No cierre el intérprete de comandos después de la llamada, todavía necesita la huella digital.
Este comando crea un nuevo certificado en el almacén de certificados:

Abra un mmc para los certificados (mmc.exe, File/Add SnapIn, Certificate, Computer Account/Local Computer).
Seleccione el certificado recién creado, haga clic con el botón derecho del ratón, Todas las tareas, Gestionar claves privadas

Añada la cuenta de servicio del servidor de servicios Navision (a menudo Administrador o Servicios de red/red)

Copie también el certificado en la carpeta Certificados raíz de confianza/certificados (botón derecho del ratón/copiar, carpeta de destino -> pegar)

Ahora puede cerrar la gestión de certificados.
Ahora copie el Thumbprint desde la consola. Esto es más fiable que copiar desde la gestión de certificados.
Ahora añada esta "huella digital" (literalmente: huella del pulgar) a la configuración del servicio Navision en Huella digital del certificado:

El nombre del ordenador está almacenado en el certificado ("Navision service"). Si es distinto, puede modificarlo:
Error de comprobación de identidad para un mensaje saliente. La identidad DNS esperada del punto final remoto era "servidor nav", pero el punto final remoto ha proporcionado la reivindicación DNS "Servicio Navision". Si se trata de un punto final remoto legítimo, puede resolver el problema especificando explícitamente la identidad DNS "navision-service" como propiedad Identity de EndpointAddress al crear un proxy de canal.
Esto se cambia en el web.config (hasta Nav 2017) o NavSettings.JSON en, por ejemplo, la carpeta C:\inetpub\wwwroot\Instance-Name, por ejemplo, C:\inetpub\wwwroot\BC140 o ClientUserSettings.config en por ejemplo C:\Users\AppData\Roaming\Microsoft\Microsoft Dynamics NAV\100 geändert:
"//DnsIdentity": "El DNS o nombre de asunto del certificado del servidor",
"DnsIdentity": "Servidor NAV",
Cambie la entrada en Dns Identity de "servidor NAV" (en este ejemplo) a "servicio Navision": Recomendación: ¡Cree el certificado directamente con la entrada DNS correspondiente!
Fehler beim Zugriff auf die Website Type: System.UnauthorizedAccessException
Fehler beim Zugriff auf die Website
Type: System.UnauthorizedAccessException
StackTrace:
bei System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
bei System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
bei System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options)
Bekommen Sie diese Fehlermeldung, und haben Sie eigentlich vor, eine 2. Web-Service Instanz zu installieren?
Szenario: Sie haben bereits einen Webservice, z.B. weil Sie (m)ein LVS betreiben. Dabei wird der Webservice benutzt, um auf den Tablets Navision/BC365 laufen zu lassen. Wenn Sie nun eine 2. Firma mit einem eigenen Navision_Service und vielleicht auch einer eigenen Datenbank betreiben wollen, richten Sie dafür eine 2. Webinstanz ein, z.B. mit dem Commantlet
New-NAVWebServerInstance newWebService -Server Localhost -ServerInstance NewNavServiceName -Company MyNewCompany
Als Ergebnis finden Sie in ihrem www-root Ordner einen neuen Ordner:

Sie müssen je nach Navisionversion noch die Config ändern. In Navision 2018/BC14 ist dies in diesen beiden Dateien hier zu machen:

In früheren Navision-versionen wurde dies evtl. in diesen Dateien gemacht:

Öffnen Sie einfach nacheinander diese Dateien, bis Sie die Einträge für Serverinstanz und Port finden, z.B. so etwas hier:

oder das hier:

Hier finden Sie dann auch wieder die Einstellung für „ClientServicesCredentialType“: „NavUserPassword“, welche Sie vieleicht auf meine Seite gelockt hat.
Das ändern Sie aber i.d.R. einfacher über die Konsole.
So, das war es… wenn… wenn Windows mitspielen würde!
Der Problemordner für die Fehlermeldung
Fehler beim Zugriff auf die Website Type: System.UnauthorizedAccessException
StackTrace:
bei System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
bei System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
bei System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options)
ist dieser hier:
C:\inetpub\wwwroot\NewWebService\wwwroot\Resources\ExtractedResources.
Hier will der Navision/BC365 Client Dateien ablegen, und darf das nicht.
Tip: Wenn Sie hier her gekommen sind, haben Sie sich bereits einen Wolf gesucht. Machen Sie es sich einfach:
Vergeben Sie dem ganzen Order NewWebService für den Benutzer IIS_IUSRS „Vollzugriff“. Achtung! Natürlich nur für den internen Gebrauch! Wenn dieser Webservice über das Internet zu erreichen ist, dann ist dies ein Sicherheitsproblem. Aber wenn Sie so ein System konfigurieren, dann sollten Sie besser nicht im Internet nach Lösungen dafür suchen, sondern das fachliche Wissen dafür haben, was Sie da gerade tun… oder jemanden um Hilfe bitten, der das kann.
