What version of Go are you using (go version)?
go version go1.9 linux/amd64
Does this issue reproduce with the latest release?
Unknown - see similar results from 1.8.X
What operating system and processor architecture are you using (go env)?
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/GREENVILLE/mauldinl/code/temp/certtest"
GORACE=""
GOROOT="/apps/go"
GOTOOLDIR="/apps/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build024155447=/tmp/go-build -gno-record-gcc-switches"
CXX="g++"
CGO_ENABLED="1"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
What did you do?
Compile and run program:
package main
import (
"crypto/tls"
"fmt"
"os"
)
func main() {
//Parse flags and check for version
cert, err := tls.LoadX509KeyPair("server.crt", "server.key")
if err != nil {
fmt.Printf("err: %v\n", err)
os.Exit(0)
}
fmt.Printf("Cert type: %T\n", cert.PrivateKey)
}
What did you expect to see?
Cert type: *rsa.PrivateKey
What did you see instead?
err: tls: failed to parse private key
Additional info
The above program will work if I run the private key through openssl
openssl rsa -in server.key -out server.key
openssl ssl version: OpenSSL 1.0.2k-fips 26 Jan 2017
Also, the unmodified server.key and server.crt work correctly in a proxying application like HAProxy.
server.key (original - does not work)
-----BEGIN RSA PRIVATE KEY-----
MIIJKAIBAAKCAgEArwHCGHQb4OyMnp7tpH2jkXjiy6fwwYvtKONZBVcB9uZQ7Epm
iG5o/hpOkPKRyPsh+d/vsLacXupxwJc51soglW+SYSnvhYCnct2TNG75N1InXjPZ
xjF7r33ET8iSrIxD2mytWzDNGVAbFrQONRi3mMy80ttV/5ClOoNaH0OtDF1cOmMw
Zw6NES4yZw2zjlhZTWwl0XroUt2JiUgfKlLYjhtojRbLE3CC4Em7k17e3CEhAKJ/
hIMIuNYCOtJo1CLCBXR9573IKhEUhlGEkfoynb2SFcZFdFVQwEqUn5WtOjngZTta
/tjoTOSH4EdWN6kAOs4X+WNqMtRw3dcGO/eyIcQULBWT71tuBL3+4dOKD6vIlRRH
xNui3ejWAjqvy1+noethWkDNdIGkHPOfzvcpyq/BCAwLG/LPyQO+USlNh/CmQmBu
Dk79HyMfNGjkkVC2BhnJ/yBq+lhSa/oK76L0K9EZiictNB255kitVTUiQOpKWbeQ
EpdPtc72w9yLas4Ho610V+ctJ+MQCFiHZpOuzsHBdsek3ZrgpUF0smEXaETZLRNg
IWkG+JQ6wzsQeX+erMgy7L2Ipsl1nNDkjgsxVHg8eaRnCBy4Vut/xteTTmZMqRiR
qmzcBOaHM7LOsgK3+z8PwPVqSCyRChF6AaL3plR3RilJwh+E31mPCDppWoECAwEA
AQKCAgAANYYuNZhD0hUejg+IsfW7GonxWAxQ61LW6glJHcFFvBerUvgr8f/lqtse
gaggaZCLH4JUZDxZEim+Z8BwYeuC3ERf1e9vPz+VJm/zZjvf6dwaCFbc28DxQpUh
iE6zXeyRypratiWfGZoRDbEgbl8z2rc1Qd/AWqJUWDuuOBqNoxSL3jM1kQ0IKvag
v46gnlDF4tUKzvO+xQGUPmhoKTRJxM3fiuhkPS78nz17+xHZiQgBIu4xQV9p0Dqa
YQRYFNU3P5BOWed4bRlj6z7wVkzZ69ZasaOAfhP4nos6Ubp+4cHIR9h3K41kYmvh
gYdGZXO8eFK1+OWLXIUrCVjgMG2RPGazv4jLivcHur/klPAEn5++VjydTevCYOU5
z2DtoQD6k5Gnmrm89PwtkSwh4QnIeYbLQ/LckZMcP0rtY+LzV7SzENKqxEcFAjzd
C/DXa6dWLAib/tOWz3cy8BXdbLQmMKYD3I/ZxrCBg4JxXVQmc/oQ1kUeosscT5z3
/x0UlnZAq7WhbLX7g6ojktreRU5RHRzJsGISGX3eOCF2bmhMo3i6Q9Yq8XQfUYbk
DTnoV+15YHgKcxehofBdxCwYoFVdGbH45r131Evi1GI3OXT5bY0IAMPGy15PyDL9
HiKgJRvyBQiGsgljAQNVmr3guQsAAIJfCz/3VUx6Ilt4qcaPGQKCAQEAxpv/IpY9
OECNcat01+qiuUKTFtYOZBbdv/vHcMmaET4OyUKzeloyhpBe46Mpl6L9EQZYudSA
8L1wVoZQK+9lJva6TMtcuPg3TsZ/D680rPjAp5YW4l9rdf76yojhBU8kOpMmlgbH
EZnghn/eTM+WwGfkqYCOc2Ip12/S4iUfmgSuRAR8NkSy3Yh/cLbnRs3iemg0Ob8x
ImoDGiC2wMfoBpYQieWDlR1JUwNlCrQCt5YJ1+JD7teQGLv0HxPA7ArAbSESk1iP
A3jGxqhZ11F3ZUQUARRaABZuApmVwF8hTaAhbRxs+TbJWVGtYH2doLtaMrHVhGGP
8FrJqavirxVzhwKCAQEA4ZPIJkFhD2GwcxnKLT+9jsAFM/nflbvx6MDqGVjY4pYO
zJiDn+lGo88XYGjcKDMkpTzRdtqTSN+VXFxHtr5iwsRCbtkTfkGbyWGWYc8QbLUf
TQOdjaHv8ke1ZwKRuLX3qL7ZFR5MCb/u8RA1DQcWQGhk8OWPkMaTSc50OINdaTX9
xTZh9i07FHfcXI+KmS+3ppxkRBY6296C6h/E1Khbc64N2yMOebkkp7T95af7jvzd
AnI6S2ZNYM3/k7+omT/sIYPGlYpPfAaZMSqRrIjQ7V4VJzn44cS7+KilK7TitcQ8
V42GN4Mqcf1nV18E9soynE/7sRrYjcGdfo7quylTtwKCAQAklxTYIGnC9VGZwYbT
SK0WCIfkyyb3labg+dfylZHG33IF7j32qqtoUyzIL4U4JJUPD+ZExjvDHoOVzUTz
8zTlissj3suEYGaAIt3B2/uOan3D4kjxB7dak9FMgw9B1STNjdKsDS+btIfC/8fK
yuvxIrLj74VPCKTAxh9J/qDl1Trt2Q2xSdLSMZWZBHlzd/bjqlME2I6K0pEjvScu
OSYsIHWHkjs9u5mIq7Vv1V4yyHejyFHPrPMlO2tsVk1Sr2BoOpGbh9NBRn0ImHeE
zcN7aqFs2X0DSx6VaApI2L3f+UJvQa9p8ogB5qRUhJAHzrx9XnoB25+THobMtZgb
vY39AoIBAQDWWXpQN8IGPrrPtMr0EmSKuBZ5nFAEVZJ6rI4GxfFZ5mNrsOUqWB3C
3K+G8j15iZeh2FfmS663CZZBLIMMuH7aOmoyMN4gFDH3u16N1Jfz5Gw4312gTyfV
nqRWnQ9haLBMTgWz1pVEknh34wG2Pmy7iTeZ3Vl9peQhtyei59kkd6SL+LA/oB1K
xtbDsbZu9/PYQzXXqRQHB7p4xPVhahV0qAkMmZRQwEh/gDHfP69/4PIWN/sC2NRg
T38zo2SPMzmrYy+Zu9LptM9u89d3Do8Rb1xEaQcBadOAZqiFDp57QFxiid3m9CGq
LbQ8RtNNuzc6Z5pwYWUz1q5Uq3OLo6qjAoIBAFK4c+WXJoEU0aFEI/NPYcD+EzyZ
OIH2N7DjTVEiDJeemLnwpaJ3YSD8KdNhEDNWBV7yONwCYBa42fW1sN/9jBMRG8pV
MufGue0H8qEh9z7IZ1nMatMXwHDDGU+b7CUat8fFZ1dNmmhtJvwsQvFnfNyXIMJQ
4j2S4zJIQaLjnDHCjHTyrspVnVywzDcUFFefRlpakOo+Yha4e7DPi0zZLcHiRXft
zxLSyz81DN7d72R9nF323o3tjQn5Y2/XLerNXsFYjINvM+nDNLZ0kfSzyV6idBp8
8oypHmKwog+Oupn5+CL6bbduelGuTyjRkGydwc3vD63cXLYtVWL78dRClc8=
-----END RSA PRIVATE KEY-----
server.key (regenerated by openssl)
-----BEGIN RSA PRIVATE KEY-----
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
-----END RSA PRIVATE KEY-----
server.crt
-----BEGIN CERTIFICATE-----
MIIHujCCBqKgAwIBAgITVAABzi/6c1dHE+sgGgABAAHOLzANBgkqhkiG9w0BAQsF
ADBcMRMwEQYKCZImiZPyLGQBGRYDY29tMRYwFAYKCZImiZPyLGQBGRYGbC0zY29t
MRIwEAYKCZImiZPyLGQBGRYCaXMxGTAXBgNVBAMTEGlzLUlTR1ZMU1VCQ0EtQ0Ew
HhcNMTcwODIyMjAwODUyWhcNMjAwODIxMjAwODUyWjCBijELMAkGA1UEBhMCVVMx
DjAMBgNVBAgTBVRleGFzMRMwEQYDVQQHEwpHcmVlbnZpbGxlMRswGQYDVQQKExJM
LTMgQ29tbXVuaWNhdGlvbnMxEzARBgNVBAsTCkVUUyBEZXNpZ24xJDAiBgNVBAMT
G2V0c3Rwcm94eS5ndmwuaXMubC0zY29tLmNvbTCCAiIwDQYJKoZIhvcNAQEBBQAD
ggIPADCCAgoCggIBAK8Bwhh0G+DsjJ6e7aR9o5F44sun8MGL7SjjWQVXAfbmUOxK
ZohuaP4aTpDykcj7Ifnf77C2nF7qccCXOdbKIJVvkmEp74WAp3LdkzRu+TdSJ14z
2cYxe699xE/IkqyMQ9psrVswzRlQGxa0DjUYt5jMvNLbVf+QpTqDWh9DrQxdXDpj
MGcOjREuMmcNs45YWU1sJdF66FLdiYlIHypS2I4baI0WyxNwguBJu5Ne3twhIQCi
f4SDCLjWAjrSaNQiwgV0fee9yCoRFIZRhJH6Mp29khXGRXRVUMBKlJ+VrTo54GU7
Wv7Y6Ezkh+BHVjepADrOF/ljajLUcN3XBjv3siHEFCwVk+9bbgS9/uHTig+ryJUU
R8Tbot3o1gI6r8tfp6HrYVpAzXSBpBzzn873KcqvwQgMCxvyz8kDvlEpTYfwpkJg
bg5O/R8jHzRo5JFQtgYZyf8gavpYUmv6Cu+i9CvRGYonLTQdueZIrVU1IkDqSlm3
kBKXT7XO9sPci2rOB6OtdFfnLSfjEAhYh2aTrs7BwXbHpN2a4KVBdLJhF2hE2S0T
YCFpBviUOsM7EHl/nqzIMuy9iKbJdZzQ5I4LMVR4PHmkZwgcuFbrf8bXk05mTKkY
kaps3ATmhzOyzrICt/s/D8D1akgskQoRegGi96ZUd0YpScIfhN9Zjwg6aVqBAgMB
AAGjggNEMIIDQDALBgNVHQ8EBAMCBaAwPgYJKwYBBAGCNxUHBDEwLwYnKwYBBAGC
NxUIhsGKC4TcwkyExYkqharzQ4a5zjqBJoPMhlqCgPQuAgFkAgEcMB0GA1UdDgQW
BBQu4FTHEOFtIhs8dYQ3GB/kwJcEdzAfBgNVHSMEGDAWgBTmKSmndpgrGOAtYrwv
ypr0vDGxrTCCARsGA1UdHwSCARIwggEOMIIBCqCCAQagggEChoHCbGRhcDovLy9D
Tj1pcy1JU0dWTFNVQkNBLUNBKDEpLENOPUlTR1ZMU3ViQ0EsQ049Q0RQLENOPVB1
YmxpYyUyMEtleSUyMFNlcnZpY2VzLENOPVNlcnZpY2VzLENOPUNvbmZpZ3VyYXRp
b24sREM9aXMsREM9bC0zY29tLERDPWNvbT9jZXJ0aWZpY2F0ZVJldm9jYXRpb25M
aXN0P2Jhc2U/b2JqZWN0Q2xhc3M9Y1JMRGlzdHJpYnV0aW9uUG9pbnSGO2h0dHA6
Ly9wa2kuaXMubC0zY29tLmNvbS9DZXJ0RW5yb2xsL2lzLUlTR1ZMU1VCQ0EtQ0Eo
MSkuY3JsMIIBXgYIKwYBBQUHAQEEggFQMIIBTDCBtAYIKwYBBQUHMAKGgadsZGFw
Oi8vL0NOPWlzLUlTR1ZMU1VCQ0EtQ0EsQ049QUlBLENOPVB1YmxpYyUyMEtleSUy
MFNlcnZpY2VzLENOPVNlcnZpY2VzLENOPUNvbmZpZ3VyYXRpb24sREM9aXMsREM9
bC0zY29tLERDPWNvbT9jQUNlcnRpZmljYXRlP2Jhc2U/b2JqZWN0Q2xhc3M9Y2Vy
dGlmaWNhdGlvbkF1dGhvcml0eTBgBggrBgEFBQcwAoZUaHR0cDovL3BraS5pcy5s
LTNjb20uY29tL0NlcnRFbnJvbGwvSVNHVkxTdWJDQS5pcy5sLTNjb20uY29tX2lz
LUlTR1ZMU1VCQ0EtQ0EoMSkuY3J0MDEGCCsGAQUFBzABhiVodHRwOi8vaXN3ZWJh
aWFjZHAuaXMubC0zY29tLmNvbS9vY3NwMBMGA1UdJQQMMAoGCCsGAQUFBwMBMBsG
CSsGAQQBgjcVCgQOMAwwCgYIKwYBBQUHAwEwDQYJKoZIhvcNAQELBQADggEBAG0+
ZcbNgxsKThuWaHmq4JgGXYfC2AnjOZ9PeCLvVAkOlmyxk/cCFLsiwddxKm72khXm
l9TOQvTqKrcx9m8x47ekGzZTUEdYWcLnniqaVbY9GjwWMetCoBJvWk8w2VyF6TWr
vlpDxGeoT8DaGZCsEkl3/bURv/Fbk0G4Vn6wDj76jkJkNrQ3zNlOtoWQMNqwobXq
CWWlynwvUwJtaxvKvhVcIF3P5mlXCrVqh2aVhtGuQnHRBN/x6gTZEcvx2tkVzuD4
OXrgHewRokPjJd10tSLlpvHOwJt5SH7soiNypJKgqVCCQ+AOh/LmyWXleWuOm3bJ
sv40rAzXQwJ0kyRob2I=
-----END CERTIFICATE-----
What version of Go are you using (
go version)?go version go1.9 linux/amd64
Does this issue reproduce with the latest release?
Unknown - see similar results from 1.8.X
What operating system and processor architecture are you using (
go env)?GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/GREENVILLE/mauldinl/code/temp/certtest"
GORACE=""
GOROOT="/apps/go"
GOTOOLDIR="/apps/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build024155447=/tmp/go-build -gno-record-gcc-switches"
CXX="g++"
CGO_ENABLED="1"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
What did you do?
Compile and run program:
What did you expect to see?
Cert type: *rsa.PrivateKey
What did you see instead?
err: tls: failed to parse private key
Additional info
The above program will work if I run the private key through openssl
openssl rsa -in server.key -out server.keyopenssl ssl version: OpenSSL 1.0.2k-fips 26 Jan 2017
Also, the unmodified server.key and server.crt work correctly in a proxying application like HAProxy.
server.key (original - does not work)
server.key (regenerated by openssl)
server.crt