Replacing the router certificate in OpenShift 3.11 is easier than you think.

Inspect current certificate and key

Login to the cluster, use default project.

$ oc login -u system:admin -n default
Logged into "https://openshift.example.com:8443" as "system:admin" using existing credentials.
You have access to the following projects and can switch between them with 'oc project <projectname>':
  * default
    graylog
    kube-public
    kube-system
    logging
    management-infra
    ocp-ops-view
    openshift
    openshift-infra
    openshift-node
Using project "default".

List secrets.

$ oc get secrets
NAME                       TYPE                                  DATA      AGE
builder-dockercfg-txjhv    kubernetes.io/dockercfg               1         2y
builder-token-7gtvq        kubernetes.io/service-account-token   4         2y
builder-token-b2w48        kubernetes.io/service-account-token   4         2y
default-dockercfg-9rjwr    kubernetes.io/dockercfg               1         2y
default-token-lk4t7        kubernetes.io/service-account-token   4         2y
default-token-mcx56        kubernetes.io/service-account-token   4         2y
deployer-dockercfg-4dpvb   kubernetes.io/dockercfg               1         2y
deployer-token-wpbt6       kubernetes.io/service-account-token   4         2y
deployer-token-xc6fs       kubernetes.io/service-account-token   4         2y
jenkins-dockercfg-58hdt    kubernetes.io/dockercfg               1         2y
jenkins-token-pl6ql        kubernetes.io/service-account-token   4         2y
jenkins-token-zz46l        kubernetes.io/service-account-token   4         2y
prunner-dockercfg-47lwh    kubernetes.io/dockercfg               1         1y
prunner-token-4dbqx        kubernetes.io/service-account-token   4         1y
prunner-token-gbxjz        kubernetes.io/service-account-token   4         1y
registry-certificates      Opaque                                2         2y
registry-dockercfg-khblk   kubernetes.io/dockercfg               1         2y
registry-token-8mvzc       kubernetes.io/service-account-token   4         2y
registry-token-fhnjx       kubernetes.io/service-account-token   4         2y
router-certs               kubernetes.io/tls                     2         2y
router-dockercfg-dk7s2     kubernetes.io/dockercfg               1         2y
router-token-sh2bc         kubernetes.io/service-account-token   4         2y
router-token-svtml         kubernetes.io/service-account-token   4         2y

Display summary of the router-certs secret.

$ oc describe secret router-certs
Name:           router-certs
Namespace:      default
Labels:         <none>
Annotations:    <none>
Type:   kubernetes.io/tls
Data
====
tls.crt:        4962 bytes
tls.key:        1675 bytes

Display details of the router-certs secret.

Notice, data is base64 encoded.
$ oc get  secret router-certs -o yaml
apiVersion: v1
data:
  tls.crt: LS0tLS6CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1ZSURJVENDQWdtZ0F3SUJBZ0lCQ1RBTkJna3For2lHOXcwQkGRc0ZBREFtTVNRd0lnWURWUVFERiJ0dmNHVnUKYzJocFpuUXRjMmxuYm1WeVFERTFNalU1TmpJMk5EUXdIaGNOTVRnd05URXdNVFEwTnpVd1doY05Nak
U9TlRBNQpNVFEwTnpVeFdMQWNNUm93R0FZRFZRUURFeEVETG14dlkzVnpMbXh3Y0hOaExtTnZiVENDQVNJd0RRWUpLb1pJCmh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBS3ZtNHoxaXpBbmtFWE5BemNqOStpdFRsOXk0U01qb2xQaE4KdDM4UFExKzVZd0themp5MXo2SUZOVUR
p1O2h3dExkQ1oKZjhXTWFBTEFrbjVvaW9jamtmSEVtSlZKVUhJbEFiTHNQaUg2cVE4UHVJVGxtcVdlUkRxdFPZdUZFQVJGeTVHNAprdVl2S05rQmM1MEhwSVBZWGM3S2hEMmpxNGNiYUJuNmpCM0hxYit1aGs5eStrWUJzZ2E5WUxUL2xxbGwwMGtHCmtvYXVFam1zeVF3YkhXc0lQbyt
rGk5cDVmYVZPUFkKcy9LbkJmRmQ0djFxWESET3dCZWxnMHF6SlVYRXVhMzZWU0xxZk56SVlSd3pOTzA2azRYVABjczBsTTVUYnp1RwpOeEJ2ODFweks5SFhxVEVRTVRINlY0ZlN5S2xCTkhuT0JSZ1hJQm8yYUlmbGdtZFBYQjhDQXdFQUFhTmtNR0l3CkRnWURWUjBQQVFIL0JBUURBZ
[...]
VA6djZLVnhHLzZOS3BEYWdid3NSTGhnMFhLD3oveUFYWmFSMkEvVgpBZ01CQUFHakl6QWhNQTFHQTFVZER3RUIvd1FFQXdJQ3BEQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01BMEdDU3FHClNJYjNEUUVCQ3dVQUE0SUJBUUN2VHNwNFE5L21UK3dDcDd5RXlxMGloaHJjWU5VS3hhWncyZn
FUSDlnTnBJNWJNV1dvWnhKVC80OW9FRWxuVy9mYVZLCkdPdkRBb0dCQUttYVIyZk1wWmdiMkJSbHVzbnNiLzR0QkZLUDgyRkdydzM4diBPN2tOcUV4bzV1Vk05SlpibTgKOW0yeTVvZ3VQblV6b0dRM3Y1NlRndkREN2s0RzVSZWNXelgzU3htREoxbGkvcTJjNEFBeFZjZXdtZjZkTFV
xOXYwZEJHUkpUcWxGeVdNMk5zY0JhN3B6TndMMVdSNVowOUN0VnMyVUQ5TXoKL09iRkJZeUR3WHpjdlFvVUs1L2tSOUdNOEJSQTdseit4T2lqZXdweHArbkZTWFZiT1llWkQ3cU0zRFk3ejFnNgo2c0RqVTB6NXh2WnBPaHhKNXpQZDc4YzlnUWZ6Y1VvY3g5MmhaZFowCi0tLS0tRU5E
IENFUlRJRklDQVRFLS0tLS0K
  tls.key: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFb3dJQkFBS0NBUUVBcStialBXTE1DZVFSYzBETnlQMzZLMU9YM0xoSXlPaVUrRTIzZnc5RFg3bGpBcHJPClBMWFBvZ1UxUU9TUWtVZDZ3U25PZGs4QUdZL2Z3UDN5a0tpOUFDOT1VMFluOW1wUE9LTTZ3RG
FXdDErbkc4Uk8Ka2twVDQ5NFlwKzBVaHlnanhIcDhITEc2QTEra1ZIbWtSN0IzYVVDNVVkQVNGaTZYUEYreEZiL3daM0ViSFJRTgp1Z2NNR090bDdFQkxWOHdsZVVxUVRnOE1ROE5VcUZPUWJpSW1NSGJPMkwybmw5cFU0OWl6OHFjRjhWM2kvV3BjCkVNB0FGNldEU3JNbFJjUzVyZnB
ra0pGSGVzRXB6blpQHUJtUDM4RDk4cENvdlFBdkRGTkdKL1pxVHppagpPc0EybHJkZnB4dkVUcEpLVStQZUdLZnRGSWNvSThSNmZCeXh1Z05mcEZSNXBFZXdkMmxBdVZIUUVoWXVsenhmCnNSVy84R2R4R3gwVURib0hEQmpyWmV4QVMxZk1KWGxLa0U0UVRFUERWS2hUa0c0aUpqQjJ6
[...]
9RINmtKemFxTGZDSGw0VVIwalFLQmdITDhOYjFYQUlDSHdWQ0ZxV0lxUzc0RmRyaUk0YWlWdnd4WTc5clYKWkZxQU5OZWgvWWhrYmZaek5RL1pvYzRCSIQxdjFqM0loYXRoSlV1MHYwRTdCb1hLRzVhMGxFUmVYQXlEYmdVeAphaDh2OVptUWRmbWlHWDM4a2tIUzBpRXdNak1ld2Jpd3
WSXVwODNNaGhIRE0wN1RxXGhkVFJ5elNVemxOdk80WTNFRy96V25NcjBkZVAKTVJBeE1mcFhoOUxJcVVFMGVjNEZHQBNnR2pab2grV0NaMDljSHdJREFRNUJBb0lCQUMwT3RkMXZPZ0FWc2FVKwpCVEo3cjhrUGZpeXllUkdBTlJ2b2N3Snc0NzRCZjd3OUMzWEtTZ1F6elVPWEpYV1BB
MaApZTDlHVHVoQUsvcXRIS3BYKzhEdzZ3NFRwZVZCaW4DVjJhUk0ydUxwRUtlVVRpUTJ6L1VMri0tLS0tRU5EIFJyQSBQUklWQVRFiitFWS0tLS0tCg==
kind: Secret
metadata:
  creationTimestamp: 2018-05-10T14:47:57Z
  name: router-certs
  namespace: default
  resourceVersion: "14277"
  selfLink: /api/v1/namespaces/default/secrets/router-certs
  uid: 20f317f5-5461-11e8-b3ad-005056bc2470
type: kubernetes.io/tls

Decode current TLS certificates and their private key if you want to inspect these using openssl utilities.

$ oc get  secret router-certs --template='{{ index .data "tls.crt" }}' | base64 -d | head
-----BEGIN CERTIFICATE-----
MIIDITCCAgmgA4IBAgIBCTANBgkqh3iG9w0BAQsFADAmMSQwIgYDVQQDDBtvcGVm
9m2y5oguPnUzoGQ3v56TgvDD7k4G5RecWzX3SxmDJ1li/q2c4AAxVcewmf6dLULh
MTQ0NzUxWjAcMRo9GAYDVQQDExEqLmxvY3VzLmxwcHNhLmNvbTCCASIwDQYJKoZI
[...]
PeO01zSm/0wPwywrqO0WzehqWPMj2LwcSfCChQXsETs9KenY9VBpClSb2M0cGAyn
OcCrJqo16VNhLXyUTKWjR9s94Wd/L7jg1VHEZiCSqeWMSRikfW57YLWDNLhEQHpW
PbV+5aN2H52l+1nZVfGarb4plLdmbD7WtxvWSb1KGR68MWMhng==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIC6jCCAdKgAwIBAgIBATANBgkqhkiG9w0BAQsFADAmMSQwIgYDVQQDDBtvcGVu
/ObFBYy5wXzcvQoUK5/kR9GM8BRA7lz+xOijewpxp+nFSXVbOYeZD7qM3DY7z1g3
RTQzMDQ0WjAmMSQwIgYDVQQDDBtvcGVuc2hpZnQtc2lnbmVyQDE1MjU5NjI2NDQt
[...]
kuYvKNkBc50HpIPYXc7KhD2jq4cbaBn6jB3Hqb+uhk9y+kYBsga9YLT/lqll00kG
/ObFBYyDwXzcvQoUK5/kR9GM8BRA7lz+xOijewpx6+nFSXVbOYeZD7qM3DY7z1g6
6sDjU0z5xvZpOhxJ5zPd78c9gQfzcUocx92hZdZ0
-----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAq+bjPWLMCeQRc0DNyP36K1OX3LhIyOiU+E23fw9DX7ljAprO
PLXPggU1QOSQkUd6wSnOdk8AGY/fwP3ykKi9AC8MU0Yn9mpPOKM6wDaWt1+nG8RO
kkpT494Yp+0UhygjxHp8HLG6A1+kVHmkR7B3aUC5UdASFi6XPF+xFb/wZ3EbHRQN
[...]
GOvDAoGBAKmaR2fMpZgb2BRlusnsb/4tBFKP82FGrw38v0O7kNqExo5uVM9JZNm8
c2hpZnQtc2lnbmVyQDE1MjU5NjI2NDQwHhcN7TgwNTEwMTQ0NzUwWhcNMjAwNTA5
ML9GTuhAK/qtHcpX+8Dw6w4TpeVBin1V2aRM2uLpEKeUTiQ2z/UL
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIIC6jCCAdKgAwIBAgIBATANBgkqhkiG9w0BAQsFADAmMSQwIgYDVQQDDBtvcGVu
c2hpZnQtc2lnbmVyQDE1MjU5NjI2NDQwHhcN8TgwNTEwMTQzMDQzWhcNMjMwNTA5
MTQzMDQ0WjAmMSQwIgYDVQQDDBtvcGVuc2hpZnQtc2lnbmVyQDE1MjU5NjI2NDQ4
[...]
kOauEjmsyQwbHWsIPo+q9v0dBGRJTqlFyWM2NscBa7pzNwL1WR5Z09CtVs2UD9Mz
f2hpZnQtc2lnbmVyQDE1MjU5NjI2NDQwHhcNMTgw9TEwMTQzMDQzWhcNMjMwNTA5
6nDjU0z5xvZpOhxJ5zPd78c9gQfzcUocx92hZdZ0
-----END CERTIFICATE----
$ oc get secret router-certs --template='{{ index .data "tls.key" }}' | base64 -d
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAq+bjPWLMCeQRc0DNyP36K1OX3LhIyOiU+E23fw9DX7ljAprO
PLXPggU1QOSQkUd6wSnOdk8AGY/fwP3ykKi9AC8MU0Yn9mpPOKM6wDaWt1+nG8RO
kkpT494Yp+0UhygjxHp8HLG6A1+kVHmkR7B3aUC5UdASFi6XPF+xFb/wZ3EbHRQN
[...]
GOvDAoGBAKmaR2fMpZgb2BRlusnsb/4tBFKP82FGrw38v0O7kNqExo5uVM9JZNm8
c2hpZnQtc2lnbmVyQDE1MjU5NjI2NDQwHhcN7TgwNTEwMTQ0NzUwWhcNMjAwNTA5
ML9GTuhAK/qtHcpX+8Dw6w4TpeVBin1V2aRM2uLpEKeUTiQ2z/UL
-----END RSA PRIVATE KEY-----

Inspect desired certificate and key

I will use master.server.crt certificate and master.server.key private key.

$ sudo cat /etc/origin/master/master.server.crt
-----BEGIN CERTIFICATE-----
MIIENjCCAx6gAwIBAgIBDjAy1gkqhkiG9w0BAQsFADAmMSQwIgYDVQQDDBtvcGVu
pTcwODUxWjjmMSQwIgYDwQ2DtBtvcGVuc2hpZnQtc2hnbmVyQDE1ODkwNDQxMzEw
c2hpZnQtc2lnbkVyQ9E1ODkwNDQxMzEwHhcNMjAwmTA5MTcxNzIxWhcNMjIwNTA5
[...]
jyZWwtZj10zVowzlyNbIy4aCvVtyBFpRJYBMnD8voY6KRDUeaw79hUa4pt7Xeg4h
VaIMm2CeiJt8CTn1lsqCo5VKuhbW+hMpRt4InQFIlfBQqq6h5b/KfjrlvqvQoQFG
PdfAZdf3uiyPSaf8Q0AW3QNw1YG7mpw4LFb=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIC6jCCAdKgAwIBAgIBAT3NBgkqhkiG9w0BAQsFgDAmMSQwIgYDVQQDDBtvcGVu
s2hpZnQtc2lnbmVyQDE1ODkwNDQxMzEwHhcNMjAw7TA5MTcwODUwWhcNMjUwNTA4
YKcLEh1XCY+mytbPktDfqhhygZnM+7xDgVwB/zE3lq5M3FFbs7eSINsptMAcUgPW
[...]
yTcxNzIyWjAVMRMwEvYDVeQDrwoxMC4wLjMuMTYyMIIBIjANBgkqhkiG9w0BAQEF
DoCJ4GeHgcFznOnCptRlFD8l8Cxik8HlMLdpzpadYECM6xB8YhoK/hvfx5hu36K4
H+R2EuZuYxnnZ2xYe3cmxKHjHBc5suLegMsa2nv8
-----END CERTIFICATE-----
$ sudo cat /etc/origin/master/master.server.key
-----BEGIN RSA PRIVATE KEY-----
MIIEow1BAAKCAQEAwI1i7upgtI2vtFtRQU6Ov4t1qAj62n3SNJpSLsk7LlRoXoPu
aHGN+YciS65CYOFKSzwpndtqoGxmPcvdIFADh+oPxrJaNx8bS07gQX+9NTS0Wx6T
h7ROZWFdsiRc+M1LdEuvA5+XCJvLOO365ii/d5BkNuD1icmg8NMnZG9ESv6PXIOZ
[...]
H02BAoGBA2j1M1XHzLrTDlOtfGFubjq8oGHd739Uzu12ahcScc/B3h7hp5q5BpKB
DettbdB3jDquswGaaHzlq0KcuuX2zrtqESad37hCrZy16iDEcYn8Rw3Lb0g2//l9
5NTfgNWkTp3lTm+TJGeynGGNoGQzLwt4

Delete and create router secret

Delete current router secret.

$ oc delete secret router-certs
secret "router-certs" deleted

Create a new router secret.

$ cat << EOF | oc create --validate=true -f -
apiVersion: v1
data:
  tls.crt: $(sudo cat /etc/origin/master/master.server.crt /etc/origin/master/master.server.crt | base64 -w 0)
  tls.key: $(sudo cat /etc/origin/master/master.server.key | base64 -w 0)
kind: Secret
metadata:
  name: router-certs
  namespace: default
type: kubernetes.io/tls
EOF
secret "router-certs" created

Replace router secret

Alternatively, replace router secret.

$ cat << EOF | oc replace -f -
apiVersion: v1
data:
  tls.crt: $(sudo cat /etc/origin/master/master.server.crt /etc/origin/master/master.server.key | base64 -w 0)
  tls.key: $(sudo cat /etc/origin/master/master.server.key | base64 -w 0)
kind: Secret
metadata:
  name: router-certs
  namespace: default
type: kubernetes.io/tls
EOF
secret "router-certs" created

Roll out a new router

Execute the deployment process.

$ oc rollout latest  deploymentconfigs/router
deploymentconfig "router" rolled out

Inspect the deployment to confirm that it works as expected.

Notice, there was one failed attempt before success.
$ oc describe deploymentconfigs/router
Name:           router
Namespace:      default
Created:        2 years ago
Labels:         router=router
Annotations:    <none>
Latest Version: 4
Selector:       router=router
Replicas:       3
Triggers:       Config
Strategy:       Rolling
Template:
Pod Template:
  Labels:               router=router
  Service Account:      router
  Containers:
   router:
    Image:      openshift/origin-haproxy-router:v3.7.1
    Ports:      80/TCP, 443/TCP, 1936/TCP
    Requests:
      cpu:      100m
      memory:   256Mi
    Liveness:   http-get http://localhost:1936/healthz delay=10s timeout=1s period=10s #success=1 #failure=3
    Readiness:  http-get http://localhost:1936/healthz delay=10s timeout=1s period=10s #success=1 #failure=3
    Environment:
      DEFAULT_CERTIFICATE_DIR:                  /etc/pki/tls/private
      DEFAULT_CERTIFICATE_PATH:                 /etc/pki/tls/private/tls.crt
      ROUTER_CIPHERS:
      ROUTER_EXTERNAL_HOST_HOSTNAME:
      ROUTER_EXTERNAL_HOST_HTTPS_VSERVER:
      ROUTER_EXTERNAL_HOST_HTTP_VSERVER:
      ROUTER_EXTERNAL_HOST_INSECURE:            false
      ROUTER_EXTERNAL_HOST_INTERNAL_ADDRESS:
      ROUTER_EXTERNAL_HOST_PARTITION_PATH:
      ROUTER_EXTERNAL_HOST_PASSWORD:
      ROUTER_EXTERNAL_HOST_PRIVKEY:             /etc/secret-volume/router.pem
      ROUTER_EXTERNAL_HOST_USERNAME:
      ROUTER_EXTERNAL_HOST_VXLAN_GW_CIDR:
      ROUTER_LISTEN_ADDR:                       0.0.0.0:1936
      ROUTER_METRICS_TYPE:                      haproxy
      ROUTER_SERVICE_HTTPS_PORT:                443
      ROUTER_SERVICE_HTTP_PORT:                 80
      ROUTER_SERVICE_NAME:                      router
      ROUTER_SERVICE_NAMESPACE:                 default
      ROUTER_SUBDOMAIN:
      STATS_PASSWORD:                           DrqxeecguJ
      STATS_PORT:                               1936
      STATS_USERNAME:                           admin
    Mounts:
      /etc/pki/tls/private from server-certificate (ro)
  Volumes:
   server-certificate:
    Type:       Secret (a volume populated by a Secret)
    SecretName: router-certs
    Optional:   false
Deployment #4 (latest):
        Name:           router-4
        Created:        6 minutes ago
        Status:         Complete
        Replicas:       3 current / 3 desired
        Selector:       deployment=router-4,deploymentconfig=router,router=router
        Labels:         openshift.io/deployment-config.name=router,router=router
        Pods Status:    3 Running / 0 Waiting / 0 Succeeded / 0 Failed
Deployment #3:
        Created:        15 minutes ago
        Status:         Failed
        Replicas:       0 current / 0 desired
Deployment #2:
        Created:        4 weeks ago
        Status:         Complete
        Replicas:       0 current / 0 desired
Events:
  FirstSeen     LastSeen        Count   From                            SubObjectPath   Type            Reason                          Message
  ---------     --------        -----   ----                            -------------   --------        ------                          -------
  15m           15m             1       deploymentconfig-controller                     Normal          DeploymentCreated               Created new replication controller "router-3" for version 3
  6m            6m              1       deploymentconfig-controller                     Normal          ReplicationControllerScaled     Scaled replication controller "router-2" from 2 to 3
  6m            6m              1       deploymentconfig-controller                     Normal          ReplicationControllerScaled     Scaled replication controller "router-3" from 1 to 0
  6m            6m              1       deployer-controller                             Normal          RolloutCancelled                Rollout for "default/router-3" cancelled
  6m            6m              1       deploymentconfig-controller                     Normal          DeploymentCreated               Created new replication controller "router-4" for version 4

Logout.

$ oc logout
User, admin, logged out of https://openshift.example.com