Hello, currently I am running CouchDB Version 2.2 on the following Ports, 5984,5986, 6984 (ssl)
But it is also required to start the port 5986 over SSL as safety aspects because non ssl is not allowed anymore in my usecase, but this seems not possible while looking upon to the Erlang Module couch_httpd.erl... The webserver would also start with the existing Port 6984.. local.ini: [daemons] httpsd = {chttpd, start_link, [https]} admin_httpds = {couch_httpd, start_link, [https]} Here you will find my example to start the non local http port 5986 as ssl admin port with 6986: -module(couch_httpd). start_link() -> start_link(http). start_link(http) -> Port = config:get("httpd", "port", "5984"), start_link(?MODULE, [{port, Port}]); start_link(https) -> % Port = config:get("ssl", "port", "6984"), Port = config:get("ssl", "adminport", "6986"), {ok, Ciphers} = couch_util:parse_term(config:get("ssl", "ciphers", undefined)), {ok, Versions} = couch_util:parse_term(config:get("ssl", "tls_versions", undefined)), {ok, SecureRenegotiate} = couch_util:parse_term(config:get("ssl", "secure_renegotiate", undefined)), ServerOpts0 = [{cacertfile, config:get("ssl", "cacert_file", undefined)}, {keyfile, config:get("ssl", "key_file", undefined)}, {certfile, config:get("ssl", "cert_file", undefined)}, {password, config:get("ssl", "password", undefined)}, {secure_renegotiate, SecureRenegotiate}, {versions, Versions}, {ciphers, Ciphers}], case (couch_util:get_value(keyfile, ServerOpts0) == undefined orelse couch_util:get_value(certfile, ServerOpts0) == undefined) of true -> couch_log:error("SSL enabled but PEM certificates are missing", []), throw({error, missing_certs}); false -> ok end, ServerOpts = [Opt || {_, V}=Opt <- ServerOpts0, V /= undefined], ClientOpts = case config:get("ssl", "verify_ssl_certificates", "false") of "false" -> []; "true" -> FailIfNoPeerCert = case config:get("ssl", "fail_if_no_peer_cert", "false") of "false" -> false; "true" -> true end, [{depth, list_to_integer(config:get("ssl", "ssl_certificate_max_depth", "1"))}, {fail_if_no_peer_cert, FailIfNoPeerCert}, {verify, verify_peer}] ++ case config:get("ssl", "verify_fun", undefined) of undefined -> []; SpecStr -> [{verify_fun, make_arity_3_fun(SpecStr)}] end end, SslOpts = ServerOpts ++ ClientOpts, Options = [{port, Port}, {ssl, true}, {ssl_opts, SslOpts}], %start_link(https, Options). start_link(admin_https, Options). ------------ stop() -> mochiweb_http:stop(couch_httpd), catch mochiweb_http:stop(https). to the following code: stop() -> mochiweb_http:stop(couch_httpd), catch mochiweb_http:stop(admin_https). Best regards, Michael