diff --git a/roles/network_plugin/calico/files/openssl.conf b/roles/network_plugin/calico/files/openssl.conf
index b1cf7bf8f8bf9c9f37ae4bdb00e8927ca289f32f..f4ba47da7315415db89cae834543bde5d4a5b08e 100644
--- a/roles/network_plugin/calico/files/openssl.conf
+++ b/roles/network_plugin/calico/files/openssl.conf
@@ -18,3 +18,10 @@ basicConstraints = CA:TRUE
 keyUsage = cRLSign, digitalSignature, keyCertSign
 subjectKeyIdentifier=hash
 authorityKeyIdentifier=keyid:always,issuer
+
+[ ssl_client_apiserver ]
+extendedKeyUsage = clientAuth, serverAuth
+basicConstraints = CA:FALSE
+subjectKeyIdentifier=hash
+authorityKeyIdentifier=keyid,issuer
+subjectAltName = DNS:calico-api.calico-apiserver.svc
diff --git a/roles/network_plugin/calico/templates/make-ssl-calico.sh.j2 b/roles/network_plugin/calico/templates/make-ssl-calico.sh.j2
index 93ff9f7b617e02d15d42e32816ab3297375a54b9..94b2022e76034c81c4b697aa339ac9b666e87b6f 100644
--- a/roles/network_plugin/calico/templates/make-ssl-calico.sh.j2
+++ b/roles/network_plugin/calico/templates/make-ssl-calico.sh.j2
@@ -87,7 +87,7 @@ elif [ $SERVICE == "apiserver" ]; then
     # calico-apiserver
     openssl genrsa -out apiserver.key {{certificates_key_size}} > /dev/null 2>&1
     openssl req -new -key apiserver.key -out apiserver.csr -subj "/CN=calico-apiserver" -config ${CONFIG} > /dev/null 2>&1
-    openssl x509 -req -in apiserver.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out apiserver.crt -days {{certificates_duration}}  -extensions ssl_client -extfile ${CONFIG} > /dev/null 2>&1
+    openssl x509 -req -in apiserver.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out apiserver.crt -days {{certificates_duration}}  -extensions ssl_client_apiserver -extfile ${CONFIG} > /dev/null 2>&1
 else
     echo "ERROR: the openssl configuration file is missing. option -s"
     exit 1