{"id":865,"date":"2022-02-18T13:12:03","date_gmt":"2022-02-18T16:12:03","guid":{"rendered":"https:\/\/maurobernal.com.ar\/blog\/?p=865"},"modified":"2022-02-18T13:12:06","modified_gmt":"2022-02-18T16:12:06","slug":"a-connection-was-successfully-established-with-the-server-but-then-an-error-occurred-during-the-pre-login-handshake","status":"publish","type":"post","link":"https:\/\/maurobernal.com.ar\/blog\/a-connection-was-successfully-established-with-the-server-but-then-an-error-occurred-during-the-pre-login-handshake\/","title":{"rendered":"A connection was successfully established with the server, but then an error occurred during the pre-login handshake"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\" id=\"trabajas-con-docker-mssql-y-recibes-este-error\">Trabajas con Docker, MSSQL y recibes este error<\/h2>\n\n\n\n<p>Para ser mas claro el error que me estuvo volviendo loco fue el siguiente:<\/p>\n\n\n\n<p>A connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: TCP Provider, error: 35 &#8211; An internal exception was caught<\/p>\n\n\n\n<p>Es dif\u00edcil de entender y descifrar as\u00ed te cuento un poco como era mi escenario<\/p>\n\n\n\n<p><strong>Escenario:<\/strong><\/p>\n\n\n\n<p>Persistencia: MS SQL Server 2018 Express Edition<\/p>\n\n\n\n<p>Aplicaci\u00f3n Web: Net 6.0 <\/p>\n\n\n\n<p>Contenedor: Docker<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>Al principio pens\u00e9 que era una cuesti\u00f3n de conexi\u00f3n al motor, por lo que suele tener las siguientes precauciones:<\/p>\n\n\n\n<p>En mi imagen base suele habilitar algunas herramientas para facilitar las pruebas: Por ejemplo iputils<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>FROM mcr.microsoft.com\/dotnet\/aspnet:6.0 AS base\r\n\r\nWORKDIR \/app\r\n#si el motor es SQL 2018\r\nRUN sed -i 's\/TLSv1.2\/TLSv1\/g' \/etc\/ssl\/openssl.cnf \r\nEXPOSE 80\r\nEXPOSE 443\r\nUSER root\r\nRUN apt-get update\r\nRUN apt-get install -y iputils-ping\r\nRUN apt-get install -y nano\r\nRUN apt-get install -y tzdata\r\nRUN apt-get install -y locales\r\nENV LANG es_AR.UTF-8  \r\nENV LANGUAGE es_AR:es  \r\nENV LC_ALL es_AR.UTF-8  \r\nENV TZ America\/Mendoza<\/code><\/pre>\n\n\n\n<p>Por otro lado en mi aplicaci\u00f3n web bajo NET 6.0 suele habilitar la migraci\u00f3n por p\u00e1rametros y habilitarlas al lanzamiento de la misma:<\/p>\n\n\n\n<p>Mi Program.cs quer\u00eda as\u00ed<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>....\nbool applymigrations = Configuration.GetValue&lt;bool>(\"Migrations:ApplyMigrations\");\r\nstring cone_rw6 = Configuration.GetValue&lt;string>(\"ConnectionStrings:RW6Connection\");\r\nstring cone_beje = Configuration.GetValue&lt;string>(\"ConnectionStrings:BejermanConnection\");\r\n\r\nConsole.WriteLine($\"BD: Migraciones {applymigrations}, Conection: {cone_rw6} \");\r\nConsole.WriteLine($\"BD: Migraciones {applymigrations}, Conection: {cone_beje} \");\r\n\r\nvar scope = app.Services.CreateScope();\r\nif (applymigrations) await Migrations(scope.ServiceProvider);\r\n\r\nConsole.WriteLine(\"******************Finalizado configuraci\u00f3n de middlewares *******************\");\r\n\r\n\/* ========  Run  =======*\/\r\napp.Run();<\/code><\/pre>\n\n\n\n<p>Y mi funci\u00f3n de Migraciones as\u00ed<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\r\n\r\nasync Task Migrations(IServiceProvider services)\r\n{\r\n    \/\/Cadena de conexi\u00f3n de variable externa\r\n\r\n\r\n\r\n    var context_identity = services.GetRequiredService&lt;AppIdentityContext>();\r\n    var context_appdb = services.GetRequiredService&lt;AppDbContext>();\r\n    var conn_appidentity = context_identity.Database.GetDbConnection();\r\n    var conn_appdb = context_appdb.Database.GetDbConnection();\r\n\r\n    Console.WriteLine($\"Conexi\u00f3n Actual Identity: {conn_appdb.ToString()}  {Environment.NewLine}  {conn_appdb.ConnectionString}\");\r\n    Console.WriteLine($\"Conexi\u00f3n Actual AppDB: {conn_appdb.ToString()}  {Environment.NewLine}  {conn_appdb.ConnectionString}\");\r\n    Console.WriteLine(\"****************** Probando acceso  *******************\");\r\n    try\r\n    {\r\n        Console.WriteLine(\"Base Disponible de Identity:\" + context_identity.Database.CanConnect());\r\n        Console.WriteLine(\"Base Disponible de AppDb:\" + context_appdb.Database.CanConnect());\r\n    }\r\n    catch (Exception ex)\r\n    {\r\n Console.WriteLine($\"------ !!! ERROR connectando: {ex.Message}\");\r\n    }\r\n\r\n    Console.WriteLine(\"****************** Aplica Migraciones:  *******************\");\r\n    Console.WriteLine(applymigrations);\r\n\r\n    if (applymigrations)\r\n\r\n    {\r\n        \/\/Aplico la migracion\r\n        Console.WriteLine(\"******************Aplicando migraci\u00f3n*******************\");\r\n        Console.WriteLine(\"Migrando Identity:\");\r\n        context_identity.Database.Migrate();\r\n        Console.WriteLine(\"Migrando Context:\");\r\n        context_appdb.Database.Migrate();\r\n\r\n        Console.WriteLine(\"******************Cargando Usuarios:*******************\");\r\n        var userManager = services.GetRequiredService&lt;UserManager&lt;MyAUser_Models>>();\r\n        var roleManager = services.GetRequiredService&lt;RoleManager&lt;IdentityRole>>();\r\n\r\n        await AppIdentity_StartUp.CargarUsuarios(userManager, roleManager);\r\n    }\r\n}<\/code><\/pre>\n\n\n\n<p>Pero a pesar de todo esto no hab\u00eda caso. La aplicaci\u00f3n se conectaba, pero luego la misma se ca\u00eda.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>Por lo que me puse a analizar el error completo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Microsoft.Data.SqlClient.SqlException (0x80131904): \r\nA connection was successfully established with the server, \r\nbut then an error occurred during the pre-login handshake. \r\n(provider: TCP Provider, error: 35 - An internal exception was caught)\r\n ---> System.Security.Authentication.AuthenticationException: Authentication failed, see inner exception.\r\n ---> Interop+OpenSsl+SslException: SSL Handshake failed with OpenSSL error - SSL_ERROR_SSL.<\/code><\/pre>\n\n\n\n<p>Y ven\u00eda de la mano de SSL. Ya sabiendo por donde orientar mi b\u00fasqueda, fue mas sencillo llegar al causar y a la soluci\u00f3n:<\/p>\n\n\n\n<p><strong>Para OpenSSL, la m\u00ednima versi\u00f3n con la que opera la imagen de .NET es TLS v1.2 en adelante, mientras que el MS SQL Server 2018 express edition, solo soporta hasta TLS v1.0<\/strong><\/p>\n\n\n\n<p>Solo era cuesti\u00f3n de probar, si la teor\u00eda era correcta. Para ello ingres\u00e9 a la imagen y modifique la configuraci\u00f3n del openssl para correr en una versi\u00f3n inferior:<\/p>\n\n\n\n<p>#docker exec -it &lt;name> sh<\/p>\n\n\n\n<p>#cat \/etc\/ssl\/openssl.cnf<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.......\r\n&#91;system_default_sect] \r\nMinProtocol = TLSv1.2 \r\nCipherString = DEFAULT@SECLEVEL=2<\/code><\/pre>\n\n\n\n<p>Por lo que proced\u00ed a modificar mi imagen, y no tener que cambiarlo manualmente en la implementaci\u00f3n:<\/p>\n\n\n\n<p>Para ello agregu\u00e9 <\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">RUN sed -i 's\/TLSv1.2\/TLSv1\/g' \/etc\/ssl\/openssl.cnf<\/pre>\n\n\n\n<p>Mi primer parte del dockerfile qued\u00f3 as\u00ed<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#################################################################################################\r\nFROM mcr.microsoft.com\/dotnet\/aspnet:6.0 AS base\r\n\r\nWORKDIR \/app\r\n#si el motor es SQL 2018\r\nRUN sed -i 's\/TLSv1.2\/TLSv1\/g' \/etc\/ssl\/openssl.cnf \r\nEXPOSE 80\r\nEXPOSE 443\r\nUSER root\r\nRUN apt-get update\r\nRUN apt-get install -y iputils-ping\r\nRUN apt-get install -y nano\r\nRUN apt-get install -y tzdata\r\nRUN apt-get install -y locales\r\nENV LANG es_AR.UTF-8  \r\nENV LANGUAGE es_AR:es  \r\nENV LC_ALL es_AR.UTF-8  \r\nENV TZ America\/Mendoza<\/code><\/pre>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Trabajas con Docker, MSSQL y recibes este error Para ser mas claro el error que me estuvo volviendo loco fue el siguiente: A connection was successfully established with the server,&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[1,202,4],"tags":[18,203,207,206,208],"class_list":["post-865","post","type-post","status-publish","format-standard","hentry","category-blog","category-dotnet","category-mssql","tag-dotnet","tag-net5","tag-net6","tag-tls","tag-tls1-2"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>A connection was successfully established with the server, but then an error occurred during the pre-login handshake &#183; devops Mauro Bernal<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/maurobernal.com.ar\/blog\/a-connection-was-successfully-established-with-the-server-but-then-an-error-occurred-during-the-pre-login-handshake\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"A connection was successfully established with the server, but then an error occurred during the pre-login handshake &#183; devops Mauro Bernal\" \/>\n<meta property=\"og:description\" content=\"Trabajas con Docker, MSSQL y recibes este error Para ser mas claro el error que me estuvo volviendo loco fue el siguiente: A connection was successfully established with the server,...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/maurobernal.com.ar\/blog\/a-connection-was-successfully-established-with-the-server-but-then-an-error-occurred-during-the-pre-login-handshake\/\" \/>\n<meta property=\"og:site_name\" content=\"devops Mauro Bernal\" \/>\n<meta property=\"article:published_time\" content=\"2022-02-18T16:12:03+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-02-18T16:12:06+00:00\" \/>\n<meta name=\"author\" content=\"Mauro Bernal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@_maurobernal\" \/>\n<meta name=\"twitter:site\" content=\"@_maurobernal\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Mauro Bernal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/a-connection-was-successfully-established-with-the-server-but-then-an-error-occurred-during-the-pre-login-handshake\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/a-connection-was-successfully-established-with-the-server-but-then-an-error-occurred-during-the-pre-login-handshake\\\/\"},\"author\":{\"name\":\"Mauro Bernal\",\"@id\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/#\\\/schema\\\/person\\\/09c4dbdfb59b20e015c703fd19713283\"},\"headline\":\"A connection was successfully established with the server, but then an error occurred during the pre-login handshake\",\"datePublished\":\"2022-02-18T16:12:03+00:00\",\"dateModified\":\"2022-02-18T16:12:06+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/a-connection-was-successfully-established-with-the-server-but-then-an-error-occurred-during-the-pre-login-handshake\\\/\"},\"wordCount\":332,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/#\\\/schema\\\/person\\\/09c4dbdfb59b20e015c703fd19713283\"},\"keywords\":[\"dotnet\",\"net5\",\"net6\",\"tls\",\"tls1.2\"],\"articleSection\":[\"Blog\",\"DotNet\",\"MSSQL\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/a-connection-was-successfully-established-with-the-server-but-then-an-error-occurred-during-the-pre-login-handshake\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/a-connection-was-successfully-established-with-the-server-but-then-an-error-occurred-during-the-pre-login-handshake\\\/\",\"url\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/a-connection-was-successfully-established-with-the-server-but-then-an-error-occurred-during-the-pre-login-handshake\\\/\",\"name\":\"A connection was successfully established with the server, but then an error occurred during the pre-login handshake &#183; devops Mauro Bernal\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/#website\"},\"datePublished\":\"2022-02-18T16:12:03+00:00\",\"dateModified\":\"2022-02-18T16:12:06+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/a-connection-was-successfully-established-with-the-server-but-then-an-error-occurred-during-the-pre-login-handshake\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/a-connection-was-successfully-established-with-the-server-but-then-an-error-occurred-during-the-pre-login-handshake\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/a-connection-was-successfully-established-with-the-server-but-then-an-error-occurred-during-the-pre-login-handshake\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"A connection was successfully established with the server, but then an error occurred during the pre-login handshake\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/\",\"name\":\"devops Mauro Bernal\",\"description\":\"Cuando tu trabajo es hacer que las cosas funcionen bien...\",\"publisher\":{\"@id\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/#\\\/schema\\\/person\\\/09c4dbdfb59b20e015c703fd19713283\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/#\\\/schema\\\/person\\\/09c4dbdfb59b20e015c703fd19713283\",\"name\":\"Mauro Bernal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/i0.wp.com\\\/maurobernal.com.ar\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/logo-maurobernal.png?fit=1740%2C1740&ssl=1\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/maurobernal.com.ar\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/logo-maurobernal.png?fit=1740%2C1740&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/maurobernal.com.ar\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/logo-maurobernal.png?fit=1740%2C1740&ssl=1\",\"width\":1740,\"height\":1740,\"caption\":\"Mauro Bernal\"},\"logo\":{\"@id\":\"https:\\\/\\\/i0.wp.com\\\/maurobernal.com.ar\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/logo-maurobernal.png?fit=1740%2C1740&ssl=1\"},\"description\":\"Desarrollo de Sistemas en .Net, IT Callcenters, DBA de SQL Server, Mikrotik, Pentest y T\u00e9cnico consultor de Sistemas Bejerman\",\"sameAs\":[\"https:\\\/\\\/maurobernal.com.ar\",\"https:\\\/\\\/x.com\\\/_maurobernal\",\"https:\\\/\\\/youtube.com\\\/maurobernal\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"A connection was successfully established with the server, but then an error occurred during the pre-login handshake &#183; devops Mauro Bernal","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/maurobernal.com.ar\/blog\/a-connection-was-successfully-established-with-the-server-but-then-an-error-occurred-during-the-pre-login-handshake\/","og_locale":"es_ES","og_type":"article","og_title":"A connection was successfully established with the server, but then an error occurred during the pre-login handshake &#183; devops Mauro Bernal","og_description":"Trabajas con Docker, MSSQL y recibes este error Para ser mas claro el error que me estuvo volviendo loco fue el siguiente: A connection was successfully established with the server,...","og_url":"https:\/\/maurobernal.com.ar\/blog\/a-connection-was-successfully-established-with-the-server-but-then-an-error-occurred-during-the-pre-login-handshake\/","og_site_name":"devops Mauro Bernal","article_published_time":"2022-02-18T16:12:03+00:00","article_modified_time":"2022-02-18T16:12:06+00:00","author":"Mauro Bernal","twitter_card":"summary_large_image","twitter_creator":"@_maurobernal","twitter_site":"@_maurobernal","twitter_misc":{"Escrito por":"Mauro Bernal","Tiempo de lectura":"4 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/maurobernal.com.ar\/blog\/a-connection-was-successfully-established-with-the-server-but-then-an-error-occurred-during-the-pre-login-handshake\/#article","isPartOf":{"@id":"https:\/\/maurobernal.com.ar\/blog\/a-connection-was-successfully-established-with-the-server-but-then-an-error-occurred-during-the-pre-login-handshake\/"},"author":{"name":"Mauro Bernal","@id":"https:\/\/maurobernal.com.ar\/blog\/#\/schema\/person\/09c4dbdfb59b20e015c703fd19713283"},"headline":"A connection was successfully established with the server, but then an error occurred during the pre-login handshake","datePublished":"2022-02-18T16:12:03+00:00","dateModified":"2022-02-18T16:12:06+00:00","mainEntityOfPage":{"@id":"https:\/\/maurobernal.com.ar\/blog\/a-connection-was-successfully-established-with-the-server-but-then-an-error-occurred-during-the-pre-login-handshake\/"},"wordCount":332,"commentCount":0,"publisher":{"@id":"https:\/\/maurobernal.com.ar\/blog\/#\/schema\/person\/09c4dbdfb59b20e015c703fd19713283"},"keywords":["dotnet","net5","net6","tls","tls1.2"],"articleSection":["Blog","DotNet","MSSQL"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/maurobernal.com.ar\/blog\/a-connection-was-successfully-established-with-the-server-but-then-an-error-occurred-during-the-pre-login-handshake\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/maurobernal.com.ar\/blog\/a-connection-was-successfully-established-with-the-server-but-then-an-error-occurred-during-the-pre-login-handshake\/","url":"https:\/\/maurobernal.com.ar\/blog\/a-connection-was-successfully-established-with-the-server-but-then-an-error-occurred-during-the-pre-login-handshake\/","name":"A connection was successfully established with the server, but then an error occurred during the pre-login handshake &#183; devops Mauro Bernal","isPartOf":{"@id":"https:\/\/maurobernal.com.ar\/blog\/#website"},"datePublished":"2022-02-18T16:12:03+00:00","dateModified":"2022-02-18T16:12:06+00:00","breadcrumb":{"@id":"https:\/\/maurobernal.com.ar\/blog\/a-connection-was-successfully-established-with-the-server-but-then-an-error-occurred-during-the-pre-login-handshake\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/maurobernal.com.ar\/blog\/a-connection-was-successfully-established-with-the-server-but-then-an-error-occurred-during-the-pre-login-handshake\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/maurobernal.com.ar\/blog\/a-connection-was-successfully-established-with-the-server-but-then-an-error-occurred-during-the-pre-login-handshake\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/maurobernal.com.ar\/blog\/"},{"@type":"ListItem","position":2,"name":"A connection was successfully established with the server, but then an error occurred during the pre-login handshake"}]},{"@type":"WebSite","@id":"https:\/\/maurobernal.com.ar\/blog\/#website","url":"https:\/\/maurobernal.com.ar\/blog\/","name":"devops Mauro Bernal","description":"Cuando tu trabajo es hacer que las cosas funcionen bien...","publisher":{"@id":"https:\/\/maurobernal.com.ar\/blog\/#\/schema\/person\/09c4dbdfb59b20e015c703fd19713283"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/maurobernal.com.ar\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":["Person","Organization"],"@id":"https:\/\/maurobernal.com.ar\/blog\/#\/schema\/person\/09c4dbdfb59b20e015c703fd19713283","name":"Mauro Bernal","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/i0.wp.com\/maurobernal.com.ar\/blog\/wp-content\/uploads\/2023\/07\/logo-maurobernal.png?fit=1740%2C1740&ssl=1","url":"https:\/\/i0.wp.com\/maurobernal.com.ar\/blog\/wp-content\/uploads\/2023\/07\/logo-maurobernal.png?fit=1740%2C1740&ssl=1","contentUrl":"https:\/\/i0.wp.com\/maurobernal.com.ar\/blog\/wp-content\/uploads\/2023\/07\/logo-maurobernal.png?fit=1740%2C1740&ssl=1","width":1740,"height":1740,"caption":"Mauro Bernal"},"logo":{"@id":"https:\/\/i0.wp.com\/maurobernal.com.ar\/blog\/wp-content\/uploads\/2023\/07\/logo-maurobernal.png?fit=1740%2C1740&ssl=1"},"description":"Desarrollo de Sistemas en .Net, IT Callcenters, DBA de SQL Server, Mikrotik, Pentest y T\u00e9cnico consultor de Sistemas Bejerman","sameAs":["https:\/\/maurobernal.com.ar","https:\/\/x.com\/_maurobernal","https:\/\/youtube.com\/maurobernal"]}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack-related-posts":[],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/maurobernal.com.ar\/blog\/wp-json\/wp\/v2\/posts\/865","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/maurobernal.com.ar\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/maurobernal.com.ar\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/maurobernal.com.ar\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/maurobernal.com.ar\/blog\/wp-json\/wp\/v2\/comments?post=865"}],"version-history":[{"count":1,"href":"https:\/\/maurobernal.com.ar\/blog\/wp-json\/wp\/v2\/posts\/865\/revisions"}],"predecessor-version":[{"id":867,"href":"https:\/\/maurobernal.com.ar\/blog\/wp-json\/wp\/v2\/posts\/865\/revisions\/867"}],"wp:attachment":[{"href":"https:\/\/maurobernal.com.ar\/blog\/wp-json\/wp\/v2\/media?parent=865"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/maurobernal.com.ar\/blog\/wp-json\/wp\/v2\/categories?post=865"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/maurobernal.com.ar\/blog\/wp-json\/wp\/v2\/tags?post=865"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}