[ https://issues.apache.org/jira/browse/TS-612?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13885882#comment-13885882 ]
James Peach commented on TS-612: -------------------------------- You don't need the {{passwd_cb}} typedef since OpenSSL provides a {{pem_password_cb}} typedef. From looking at {{crypto/pem/pem.h}} you should probably puke if OpenSSL is < 0.9.4, though. {{SSL_CLEAR_PW_REFERENCES}} should be written in functional style, like {{SSL_CLEAR_PW_REFERENCES(ud, ctx)}}. Need to remove {{ink_process.h}} remnants. I think the code that selects the dialog callback could be simpler. Here's what I suggest: {code} passphrase_cb_userdata ud(params, serverDialog, serverCertPtr, serverKeyPtr); if (serverDialog) { int (*passwd_cb)(char *buf, int size, int rwflag, void *userdata); if (strncmp(serverDialog,"exec:", 5) == 0) { ud._serverDialog = &serverDialog[5]; // validate the exec program if (!ssl_private_key_validate_exec(ud._serverDialog)) { SSLError("failed to access '%s' pass phrase program: %s", (const char *)ud._serverDialog,strerror(errno)); goto fail; } } else if (strcmp(serverDialog, "builtin") == 0) { passwd_cb = ssl_private_key_passphrase_callback_exec; } else { // XXX Puke ... passwd_cb = ssl_private_key_passphrase_callback_builtin; } SSL_CTX_set_default_passwd_cb(ctx, passwd_cb); SSL_CTX_set_default_passwd_cb_userdata(ctx, &ud); } {code} Why do the dialog functions allocate temporary buffer? It looks like they could put the passphrase right into the buffer that OpenSSL gives us. Nice documentation updates! > ATS does not allow password protected certificates > -------------------------------------------------- > > Key: TS-612 > URL: https://issues.apache.org/jira/browse/TS-612 > Project: Traffic Server > Issue Type: Improvement > Components: SSL > Affects Versions: 3.0.0 > Environment: Any > Reporter: Igor Galić > Assignee: Ron Barber > Fix For: 6.0.0 > > > Create a (self-signed) certificate with a password that is non-empty. {cat > server.key server.crt > server.pem} and configure it as > {CONFIG proxy.config.ssl.server.cert.filename STRING server.pem} > The result will be: > {noformat} > Jan 3 10:50:16 proveedores traffic_server[2579]: NOTE: --- Server Starting > --- > Jan 3 10:50:16 proveedores traffic_server[2579]: NOTE: Server Version: > Apache Traffic Server - traffic_server - 2.0.1 - (build # 113112 on Dec 31 > 2010 at 12:58:34) > Jan 3 10:50:16 proveedores traffic_server[2579]: {1080362352} STATUS: opened > var/log/trafficserver/diags.log > Jan 3 10:50:16 proveedores traffic_server[2579]: {1080362352} NOTE: updated > diags config > Jan 3 10:50:16 proveedores traffic_server[2579]: {1080362352} NOTE: cache > clustering disabled > Jan 3 10:50:16 proveedores traffic_server[2579]: {1080362352} WARNING: no > cache disks specified in etc/trafficserver/storage.config: cache disabled > Jan 3 10:50:16 proveedores traffic_server[2579]: {1080362352} NOTE: cache > clustering disabled > Jan 3 10:50:16 proveedores traffic_server[2579]: {1080362352} WARNING: > unable to open cache disk(s): Cache Disabled > Jan 3 10:50:16 proveedores traffic_server[2579]: {1080362352} ERROR: SSL > ERROR: Cannot use server private key file. > Jan 3 10:50:16 proveedores traffic_server[2579]: {1080362352} ERROR: > SSL::0:error:0906406D:PEM routines:PEM_def_callback:problems getting > password:pem_lib.c:105: > Jan 3 10:50:16 proveedores traffic_server[2579]: {1080362352} ERROR: > SSL::0:error:0906A068:PEM routines:PEM_do_header:bad password > read:pem_lib.c:406: > Jan 3 10:50:16 proveedores traffic_server[2579]: {1080362352} ERROR: > SSL::0:error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM > lib:ssl_rsa.c:669: > Jan 3 10:50:16 proveedores traffic_server[2579]: {1080362352} ERROR: SSL > ERROR: Can't initialize the SSL library, disabling SSL termination!. > Jan 3 10:50:16 proveedores traffic_server[2579]: {1080362352} NOTE: logging > initialized[7], logging_mode = 3 > Jan 3 10:50:16 proveedores traffic_server[2579]: {1080362352} NOTE: traffic > server running > {noformat} > A first -- ugly -- shot would be to at least have a password field in the > configuration. > In the end something taking the input of an external program or from a file > would be more desirable. -- This message was sent by Atlassian JIRA (v6.1.5#6160)