(#23222) Custom CSR attributes should only contain strings

RFC 2985 indicates that CSR attributes may contain arbitrarily complex
data, but the `openssl req` command can only handle attributes with
string values. This commit changes the csr attribute structure to simple
key/value pairs so that the attributes are properly displayed by
OpenSSL. If richer data types are need then data can be serialized as
JSON or YAML and added as a CSR value.