<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0"
  xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
  xmlns:atom="http://www.w3.org/2005/Atom">

<channel>

<title>M9K blog: заметки с тегом curl</title>
<link>https://blog.m9k.space/tags/curl/</link>
<description>Заметки обо всём: devops, lifestyle, культура.</description>
<author>M</author>
<language>ru</language>
<generator>E2 (v3877; Aegea)</generator>

<itunes:owner>
<itunes:name>M</itunes:name>
<itunes:email></itunes:email>
</itunes:owner>
<itunes:subtitle>Заметки обо всём: devops, lifestyle, культура.</itunes:subtitle>
<itunes:image href="" />
<itunes:explicit></itunes:explicit>

<item>
<title>Curl over ssh-tls-tunnel</title>
<guid isPermaLink="false">200</guid>
<link>https://blog.m9k.space/all/curl-over-ssh-tunnel/</link>
<pubDate>Thu, 14 Aug 2025 10:21:23 +0000</pubDate>
<author>M</author>
<comments>https://blog.m9k.space/all/curl-over-ssh-tunnel/</comments>
<description>
&lt;p&gt;Есть ресурс resource.name, на который нужно ходить curl-ом с засылкой данных через JSON. Специфика ресурса такова, что он принимает соединения через TLS 1.3.&lt;br /&gt;
Есть сервер A server.name, на котором нет выхода на нужный ресурс, но есть Nginx, и есть ssh-доступ до сервера B&lt;br /&gt;
Есть сервер B, на котором есть выход на нужный ресурс, но сам сервер очень старый, и TLS на нём не проходит по требования resource.name.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;printf '' | openssl s_client -connect 127.0.0.1:8443 -servername resource.name -tls1_3 -brief&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Костылим:&lt;br /&gt;
На сервере A поднимаем туннель на внутренний порт:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;ssh -fN -o ExitOnForwardFailure=yes -o ServerAliveInterval=60 -o ServerAliveCountMax=3 -L 8443:resource.name:443 user@serverB&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;На Nginx рисуем конфиг:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;server {
        listen 9090;
        server_name         server.name;

        access_log  /site/logs/nginx/port_9090.log  main;
        error_log   /site/logs/nginx/port_9090.error.log;

location / {
        proxy_pass https://127.0.0.1:8443;

        proxy_set_header Host resource.name;
        proxy_ssl_server_name on;
        proxy_ssl_name resource.name;
        proxy_ssl_protocols TLSv1.3;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
        proxy_connect_timeout 10s;
        proxy_read_timeout 60s;
        proxy_ssl_verify off;
}
}&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Кидаемся тестовым запросом:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;curl -v -X POST 'http://server.name:9090/resource' -H 'Content-Type: application/json' --data '{&amp;quot;login&amp;quot;:&amp;quot;$LOGIN&amp;quot;,&amp;quot;password&amp;quot;:&amp;quot;$PASSWORD&amp;quot;}'&lt;/code&gt;&lt;/pre&gt;</description>
</item>

<item>
<title>Проверка работы FTPs с использованием сертификатов</title>
<guid isPermaLink="false">161</guid>
<link>https://blog.m9k.space/all/proverka-raboty-ftp/</link>
<pubDate>Fri, 12 Jul 2024 05:47:00 +0000</pubDate>
<author>M</author>
<comments>https://blog.m9k.space/all/proverka-raboty-ftp/</comments>
<description>
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;curl -3 -k -v --ftp-ssl --tlsv1.2 --ftp-ssl-reqd --ftp-pasv --key client.key --cacert ca.crt --cert client.crt --user $USERNAME ftp://$IP:$PORT&lt;/code&gt;&lt;/pre&gt;</description>
</item>


</channel>
</rss>