Dynamics CR-替换SSL证书
问题:
在访问Dynamics CRM的时候由于SSL证书是有期限限制的,所以需要在一段时间之后更换SSL证书。SSL证书分为两类,一类是自建证书,一类是外网证书
自建证书是在服务器安装完成之后,在CA服务器中申请的自签名通配符证书;
外网证书是在第三方证书颁发机构买的通配符证书,在购买的第三方证书需要进行域名备案,比如腾讯云或者阿里云。
那么对于自建证书过期之后如何进行替换呢?
解决方案:
自建证书过期之后我们可以重新申请一个证书,然后将新申请的证书导入IIS和ADFS管理器
一、申请证书
1.进入到CRM服务器,打开IIS管理器,双击打开"服务器证书"
2.创建证书申请
点击"创建证书申请"
3.填写证书信息,信息填写完成之后,点击"下一步"
*.hmp02.com:通配符证书名称,通配符证书一般为 *.域名.com。例如:*.hmp02.com
组织和组织单位都为CRM
城市/地点和省/市/自治区自指定,一般是所在省市的信息
4.默认加密服务提供程序,点击"下一步"
5.将证书申请保存到本地的txt文件中,最后需要用txt文件中的内容进行证书申请
填写文件名称,点击"打开"
点击"完成"
完成之后就会在本地创建一个CRMCert.txt的文件
打开文件内容的格式如下所示
6.进入到CA服务器进行证书申请和下载,一般CA服务都和AD域服务器在一块安装,当然也可以单独分开安装
在CA服务器的浏览器中输入:http://机器名/certsrv/,输入用户和密码进行登录,登录成功打开证书注册页面,选择"申请证书",进入到证书申请页面
例如:http://hmp02-crm/certsrv/,hmp02就是机器名称
在证书申请页面,点击"高级证书申请",进入到高级证书申请页面
在高级证书申请页面,选择"使用 base64 编码的 CMC 或 PKCS #10 文件提交 一个证书申请,或使用 base64 编码的 PKCS #7 文件续订证书申请"
将CRMCert.txt中的内容复制到保存的申请的文本框中,证书模板选择"Web 服务器"。点击"提交"
提交完成之后,进入到证书页面,点击"下载证书"
将证书另存到本地
此处将证书存储到桌面,取名为CRMCert2020.cer,点击"保存"
提示证书已经下载完成,我们点击"打开文件夹"就可以看到下载的证书
申请的证书文件如下图
证书申请完成
二、将证书导入到IIS
自建证书申请完成之后,将证书导入到IIS服务器中
7.进入CRM服务器的IIS管理器,点击"完成证书申请"
选择刚才创建的证书文件,好记名称可以自建,但是一般为证书名称+日期,例如:CRMCert20201102,证书存储默认为个人。点击"确定"
如图所示,新申请的证书已经导入到了IIS服务器中
8.将新证书和Dynamics CRM进行绑定,如果不绑定的话,会导致CRM和ADFS无法通信
在IIS中选择"Microsoft Dynamics CRM"网站,点击”绑定“
选中https类型,点击"编辑"
选择刚才申请的证书,这里显示的是证书在IIS管理器的"好记名称"
选择完成之后,点击"确定"
将证书导入到IIS完成
三、将证书导入到ADFS管理器
在将就证书导入到ADFS服务器之前,需要保证ADFS拥有访问证书的权限
9.在CRM服务器中打开PowerShell输入mmc,打开mmc控制台。将证书添加到mmc控制单元
进入到mmc控制台中,点击"文件",选择"添加/删除管理单元(M)...."
选择'证书",点击"添加"
再弹出框中,选择"计算机帐户",点击"下一步"
保持默认选择,点击"完成"
点击完成之后,就可以看到证书添加到”所选管理单元"中,点击"确定"。
添加完成
10.给ADFS帐户分配证书权限
展开证书选择"个人-证书",找到刚才创建的证书
右键点击证书,选择"所有任务",点击"管理私钥"
在弹框中点击"添加",添加用户
在选择用户、计算机、服务帐户或组的弹框中,通过输入对象名称来选择,输入Net,点击"检查名称"
系统中会按照模糊查询,查询出来用户。在查询出来的用户中选择"NETWORK SERVICE",点击"确定"
用户选择完成之后,会将用户名称填入,点击"确定"
用户添加完成,点击"确定"
11.将证书导入到ADFS服务器中
打开ADFS管理,展开"服务",选择"证书"
点击"设置服务通信证书",选择申请的新证书,点击"确定"
如果出现证书**长度提示信息,选择"是"
出现如下提示,选择"是"
点击确定之后,证书替换成功。
如果证书替换过程中,抛出如下错误:
则再PowerShell中执行如下命令:Set-ADFSProperties -AutoCertificateRollover $false
设置自动更新为false,这样在替换证书之后就不会在出现此问题,在更新完成之后记得运行:Set-ADFSProperties -AutoCertificateRollover $true 将此自动更新更改为true
12.更换证书指纹,为了让ADFS证书和使用的认证指纹保持一致
证书指纹可以在证书中查看,进入到IIS服务器的服务器证书,右键点击申请的证书,点击"查看"
在证书详细信息中,点击"指纹"
这个就是证书的指纹,我们需要将指纹的空格去掉最终形成的指纹如下:6758d9a7ab217766ae267e3ff94a39f657f6f6c1
证书指纹获取成功之后,需要进行指纹替换
在PowerShell中输入如下命令:Set-AdfsSslCertificate Thumbprint 证书指纹
例如: Set-AdfsSslCertificate Thumbprint 6758d9a7ab217766ae267e3ff94a39f657f6f6c1
运行完成之后,重启ADFS服务
13.在CRM中重新部署基于声明的身份验证和配置IFD的身份验证(选择新的证书点击下一步走完整个过程即可)
先配置基于声明的身份验证,后配置IFD的身份验证
14.更新ADFS中的联合数据源
进入到ADFS管理中,更新这两个联合数据源,先更新基于声明的身份验证,在更新IFD身份验证
这两个身份验证都是右击,选择"从联合元数据更新(U)..."
15.更新成功之后,重启IIS服务器
总结:
一、更换自建证书主要有如下步骤:
1.在CRM服务器的IIS,证书服务器中创建新的证书申请。在CA服务器上面创建根据证书申请创建新创建证书。并且导入到IIS服务器。同时让Network Service拥有管理和访问证书的权限
2.在安装有ADFS服务的服务器上面,导入新创建的证书(分布式安装)
将CRM服务器中IIS服务器中证书导出为.pfx文件,通过MMC导入到ADFS服务器
- 1.get-AdfsSslCertificate 获取证书指纹
- 2.Set-ADFSProperties -AutoCertificateRollover $false 设置自动续期为false
- 3.Set-AdfsSslCertificate -Thumbprint xxxxxxxxxxx 替换通信服务证书指纹为:xxxxxxxxxxx
- 4.Set-ADFSProperties -AutoCertificateRollover $true 设置自动续期为true(一定要设置自动续期为true,否则每五天都要到期一次)
- update-adfscertificate token-decrypting(可选)
- update-adfscertificate token-signing(可选)
4.重新启动ADFS服务
5.在CRM服务器中重新部署基于声明的身份验证和配置面向Internet的部署
6.更新ADFS中的联合数据源
7.重新启动IIS服务器
二、更换第三方证书主要有如下步骤:
1.在CRM服务器的IIS的证书服务器里面,导入新的.pfx证书,同时让Network Service拥有管理和访问证书的权限。删除掉旧证书
2.在ADFS服务的服务器上面,导入新创建的证书。通过MMC导入到ADFS服务器,同时让Network Service拥有管理和访问证书的权限。
在ADFS管理器中更换通信服务器证书
在PowerShell种执行以下命令
- 1.get-AdfsSslCertificate 获取旧证书指纹(可选)
- 2.Set-ADFSProperties -AutoCertificateRollover $false 设置自动续期为false,如果不设置为false的话,是无法更换证书的
- 3.Set-AdfsSslCertificate -Thumbprint xxxxxxxxxxx 替换通信服务证书指纹为:xxxxxxxxxxx
- 4.Set-ADFSProperties -AutoCertificateRollover $true 设置自动续期为true,CA验证自动续期
- update-adfscertificate token-decrypting(可选)
- update-adfscertificate token-signing(可选)
4.重新启动ADFS服务
5.更新ADFS中的联合数据源
6.在CRM服务器中重新部署基于声明的身份验证和配置面向Internet的部署
5-6可以视情况而定,先6后5,或者先5后6
7.重新启动IIS服务器
注意事项:
本文档证书替换过程适用于Dynamics CRM的单服务器安装,如果是分布式安装,则需要将导入到IIS服务器中的证书导出为.pfx文件,然后通过MMC导入到ADFS服务器中