<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="229148" data-post-id="229148">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="Elmiira" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/Elmiira/120/24593_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  Elmiira
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>For instance, when i try to create a simple tls server implementation (It’s not the real code, I just tried to simulate the problem as an example), as follow:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">  defp tls_start() do
    :ssl.start()
    {:ok, listen_socket} = :ssl.listen(8080, [{:certfile, "server.crt"}, {:keyfile, "server.key"}, {:cacertfile, "ca.crt"}, {:reuseaddr, true}, {:versions, [:'tlsv1.3'], ciphers: [%{cipher: :aes_gcm, prf: :sha384}]}]) #%{cipher: :chacha20_poly1305, prf: :sha384}
    {:ok, tls_socket} = :ssl.transport_accept(listen_socket)
    {:ok, socket} = :ssl.handshake(tls_socket)
    {:ok, socket}
  end
</code></pre>
<p>I get this error:<br>
<code>(throw) {:option_not_a_key_value_tuple, {:versions, [:"tlsv1.3"], [ciphers: [%{cipher: :aes_gcm, prf: :sha384}]]}}</code></p>
<p>but according to this Erlang/Otp documentation,  <a href="https://github.com/erlang/otp/blob/3cd45f14afb81f0d569a3c3350fcab172c75d1f0/lib/ssl/src/tls_record.erl#L406-L434" class="inline-onebox" rel="noopener nofollow ugc">otp/lib/ssl/src/tls_record.erl at 3cd45f14afb81f0d569a3c3350fcab172c75d1f0 · erlang/otp · GitHub</a> I am passing the correct erlang cipher suite, right?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="229148" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/using-tls-1-3-with-phoenix/28490/22">Post #21</a>
	                </div>
	            </div>
              <div id="likers-container-229148" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="229148"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #21"></div>
  </section>
</div>
    <div class="postbit" id="229150" data-post-id="229150">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="Elmiira" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/Elmiira/120/24593_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  Elmiira
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>could you please share your config?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="229150" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/using-tls-1-3-with-phoenix/28490/23">Post #22</a>
	                </div>
	            </div>
              <div id="likers-container-229150" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="229150"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #22"></div>
  </section>
</div>
    <div class="postbit" id="229153" data-post-id="229153">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="voltone" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/voltone/120/24672_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  voltone
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="Elmiira" data-post="22" data-topic="28490">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/elmiira/48/24593_2.png" class="avatar"> Elmiira:</div>
<blockquote>
<pre data-code-wrap="elixir"><code class="lang-elixir">    {:ok, listen_socket} = :ssl.listen(8080, [{:certfile, "server.crt"}, {:keyfile, "server.key"}, {:cacertfile, "ca.crt"}, {:reuseaddr, true}, {:versions, [:'tlsv1.3'], ciphers: [%{cipher: :aes_gcm, prf: :sha384}]}])
</code></pre>
</blockquote>
</aside>
<p>That should be:</p>
<p><code>{:ok, listen_socket} = :ssl.listen(8080, [{:certfile, "server.crt"}, {:keyfile, "server.key"}, {:cacertfile, "ca.crt"}, {:reuseaddr, true}, {:versions, [:'tlsv1.3']}, ciphers: [%{cipher: :aes_gcm, prf: :sha384}]])</code></p>
<p>You didn’t close the <code>{:versions, versions}</code> tuple correctly…</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="229153" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/using-tls-1-3-with-phoenix/28490/24">Post #23</a>
	                </div>
	            </div>
              <div id="likers-container-229153" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="229153"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #23"></div>
  </section>
</div>
    <div class="postbit" id="229155" data-post-id="229155">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="Elmiira" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/Elmiira/120/24593_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  Elmiira
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group quote-modified" data-username="voltone" data-post="24" data-topic="28490">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/voltone/48/24672_2.png" class="avatar"> voltone:</div>
<blockquote>
<p>{:ok, listen_socket} = :ssl.listen(8080, [{:certfile, “server.crt”}, {:keyfile, “server.key”}, {:cacertfile, “ca.crt”}, {:reuseaddr, true}, {:versions, [:‘tlsv1.3’]}, ciphers: [%{cipher: :aes_gcm, prf: :sha384}]])</p>
</blockquote>
</aside>
<p>Thanks, right,<br>
After fixing to :<br>
<code> {:ok, listen_socket} = :ssl.listen(8080, [{:certfile, "server.crt"}, {:keyfile, "server.key"}, {:cacertfile, "ca.crt"}, {:reuseaddr, true}, {:versions, [:'tlsv1.3']}, ciphers: [%{cipher: :chacha20_poly1305, prf: :sha384}]])</code></p>
<p>the error is:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">(MatchError) no match of right hand side value: {:error, {:options, {:insufficient_crypto_support, {:"tlsv1.3", {:versions, [:"tlsv1.3"]}}}}}
     code: tls_start()
</code></pre>
<p>the one that exactly i receive in my real application.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="229155" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/using-tls-1-3-with-phoenix/28490/25">Post #24</a>
	                </div>
	            </div>
              <div id="likers-container-229155" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="229155"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #24"></div>
  </section>
</div>
    <div class="postbit" id="229157" data-post-id="229157">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="voltone" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/voltone/120/24672_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  voltone
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="Elmiira" data-post="25" data-topic="28490">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/elmiira/48/24593_2.png" class="avatar"> Elmiira:</div>
<blockquote>
<pre data-code-wrap="elixir"><code class="lang-elixir">(MatchError) no match of right hand side value: {:error, {:options, {:insufficient_crypto_support, {:"tlsv1.3", {:versions, [:"tlsv1.3"]}}}}}
</code></pre>
</blockquote>
</aside>
<p>This means the OpenSSL version you are using (or that Erlang/OTPs <code>:crypto</code> module was built against) does not support all the necessary primitives to enable TLS 1.3. You may have to upgrade your OpenSSL version and rebuild Erlang/OTP.</p>
<p><em>Edit</em>: you can the exact list of what OTP requires from OpenSSL to enable TLS 1.3 <a href="https://github.com/erlang/otp/blob/master/lib/ssl/src/tls_record.erl#L422-L450" rel="noopener nofollow ugc">here</a></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="229157" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/using-tls-1-3-with-phoenix/28490/27">Post #26</a>
	                </div>
	            </div>
              <div id="likers-container-229157" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="229157"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #26"></div>
  </section>
</div>
    <div class="postbit" id="229159" data-post-id="229159">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="moogle19" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/moogle19/120/24423_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  moogle19
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>It looks like <code>chacha20_poly1305</code> in combination with <code>sha384</code> is not supported (at least not for my installation):</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">:ssl.cipher_suites(:all, :'tlsv1.3') |&gt; Enum.filter(fn %{cipher: cipher} -&gt; cipher == :chacha20_poly1305 end)
[
  %{cipher: :chacha20_poly1305, key_exchange: :any, mac: :aead, prf: :sha256},
  %{
    cipher: :chacha20_poly1305,
    key_exchange: :ecdhe_ecdsa,
    mac: :aead,
    prf: :sha256
  },
  %{
    cipher: :chacha20_poly1305,
    key_exchange: :ecdhe_rsa,
    mac: :aead,
    prf: :sha256
  },
  %{
    cipher: :chacha20_poly1305,
    key_exchange: :dhe_rsa,
    mac: :aead,
    prf: :sha256
  }
]
</code></pre>
<p>And I think you have to fill all fields of the cipher struct to make it work (or use the string representation), like:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">{:ok, listen_socket} = :ssl.listen(
  8080, 
  [
    {:certfile, "server.crt"}, {:keyfile, "server.key"}, {:cacertfile, "ca.crt"}, {:reuseaddr, true}, 
    {:versions, [:'tlsv1.3']},
    ciphers: [
      %{key_exchange: :any, cipher: :chacha20_poly1305, mac: :aead, prf: :sha256}
    ]
  ]
)
</code></pre> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="229159" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/using-tls-1-3-with-phoenix/28490/28">Post #27</a>
	                </div>
	            </div>
              <div id="likers-container-229159" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="229159"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #27"></div>
  </section>
</div>
    <div class="postbit" id="229231" data-post-id="229231">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="Elmiira" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/Elmiira/120/24593_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  Elmiira
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Thanks, it was really helpful.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="229231" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/using-tls-1-3-with-phoenix/28490/29">Post #28</a>
	                </div>
	            </div>
              <div id="likers-container-229231" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="229231"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #28"></div>
  </section>
</div>
    <div class="postbit" id="229232" data-post-id="229232">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="Elmiira" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/Elmiira/120/24593_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  Elmiira
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Thanks Voltone, You are right, the issue is with my OpenSSl version.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="229232" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/using-tls-1-3-with-phoenix/28490/30">Post #29</a>
	                </div>
	            </div>
              <div id="likers-container-229232" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="229232"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-last-post cat-last-post" title="Last post!"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <span class="all-loaded">— All posts loaded —</span>
</div></template></turbo-stream>