Skip to content

OpenSSL errors when cached SSL certificates are corrupted #8705

@flotwig

Description

@flotwig

Current behavior

There is a race condition in https-proxy that can cause the CA store to become corrupted if multiple Cypress processes are sharing the same appdata directory simultaneously. This causes errors like the following when visiting HTTPS websites:

Error: error:0b000074:X.509 certificate routines:OPENSSL_internal:KEY_VALUES_MISMATCH
Error: error:0900006e:PEM routines:OPENSSL_internal:NO_START_LINE

And other errors relating to corrupt/mismatched private keys and SSL certificates.

Desired behavior

The race condition is avoided, probably with the addition of a lockfile when generating/writing CA certificates.

Note: Cypress is not generally designed to run as multiple processes sharing a home directory.

Workaround (Linux-only)

A workaround is to set a different XDG_CONFIG_HOME environment variable for each Cypress process that is running. This will cause each process to have its own CA store, eliminating the possibility of a race condition.

Example:

# assuming these are somehow run simultaneously
XDG_CONFIG_HOME=/tmp/cyhome1 cypress run...
XDG_CONFIG_HOME=/tmp/cyhome2 cypress run...

This may have side-effects outside of just fixing this issue, but it is the only workaround for now.

Metadata

Metadata

Assignees

Labels

pkg/https-proxyThis is due to an issue in the packages/https-proxy directorytype: bug

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions