Então, depois de mais uma revisão, parece que tudo foi muito mais simples do que eu imaginava.
O HTTPD usa a função de criptografia fornecida pelo sistema e, portanto, aproveita sua modularidade.
Em teoria, ele suporta diretamente o BCrypt (embora eu não tenha testado). Eu testei o SHA-512 usando o prefixo $ 6.
Portanto, definir uma senha conforme calculado abaixo alcança o resultado desejado:
salt = 'fGn9LR75';
puts 'quohjo5oor4ac3Deolei'.crypt('$6$' + salt);
=>
"$6$fGn9LR75$juRSrMtKBa8pdZ8tbTouUvDItoF9Fp.LVk8Kqv2ZL5T.R.q/nUQNGePve1Ge/8rDf/xqUwgpY.3F1MQ0qtauf0"