84
84
" client certificate for authentication, if required by server" },
85
85
{keyfile , undefined , " keyfile" , string ,
86
86
" client private key for authentication, if required by server" },
87
+ {ciphers , undefined , " ciphers" , string ,
88
+ " Cipher suite for ssl/tls connection, comma separated list. e.g. TLS_AES_256_GCM_SHA384,TLS_CHACHA20_POLY1305_SHA256" },
89
+ {signature_algs , undefined , " signature-algs" , string ,
90
+ " Signature algorithm for tlsv1.3 connection only, comma separated list. e.g. ecdsa_secp384r1_sha384,ecdsa_secp256r1_sha256" },
87
91
{quic , undefined , " quic" , {string , " false" },
88
92
" QUIC transport" },
89
93
{ws , undefined , " ws" , {boolean , false },
@@ -970,7 +974,12 @@ tcp_opts([_|Opts], Acc) ->
970
974
ssl_opts (Opts ) ->
971
975
ssl_opts (Opts , init_ssl_opts ()).
972
976
ssl_opts ([], Acc ) ->
973
- [{ciphers , all_ssl_ciphers ()} | Acc ];
977
+ case lists :keymember (ciphers , 1 , Acc ) of
978
+ false ->
979
+ [{ciphers , all_ssl_ciphers ()} | Acc ];
980
+ _ ->
981
+ Acc
982
+ end ;
974
983
ssl_opts ([{host , Host } | Opts ], Acc ) ->
975
984
ssl_opts (Opts , [{server_name_indication , Host } | Acc ]);
976
985
ssl_opts ([{keyfile , KeyFile } | Opts ], Acc ) ->
@@ -989,6 +998,12 @@ ssl_opts([{nst_dets_file, DetsFile}| Opts], Acc) ->
989
998
ok = prepare_nst (DetsFile ),
990
999
io :format (" enable session_tickets~n " ),
991
1000
ssl_opts (Opts , [{session_tickets , manual }|Acc ]);
1001
+ ssl_opts ([{ciphers , Ciphers }| Opts ], Acc ) ->
1002
+ CipherList = [ssl :str_to_suite (X ) || X <- string :tokens (Ciphers , " ," )],
1003
+ ssl_opts (Opts , [{ciphers , CipherList } | Acc ]);
1004
+ ssl_opts ([{signature_algs , Algs }| Opts ], Acc ) ->
1005
+ AlgList = [list_to_existing_atom (X ) || X <- string :tokens (Algs , " ," )],
1006
+ ssl_opts (Opts , [{signature_algs , AlgList } | Acc ]);
992
1007
ssl_opts ([_ |Opts ], Acc ) ->
993
1008
ssl_opts (Opts , Acc ).
994
1009
0 commit comments