如果启用FIPS加密,VSIX Installer会崩溃

时间:2017-10-11 13:55:49

标签: visual-studio-2017 vsix

如果启用了FIPS加密,是否可以解决VSIX安装程序。

错误详情: 应用程序:vsixinstaller.exe

框架版本:v4.0.30319

描述:由于未处理的异常,该进程已终止。

异常信息:System.InvalidOperationException

在System.Security.Cryptography.MD5CryptoServiceProvider..ctor()

异常信息:System.Reflection.TargetInvocationException

at System.RuntimeMethodHandle.InvokeMethod(System.Object,System.Object [],System.Signature,Boolean)

在System.Reflection.RuntimeConstructorInfo.Invoke(System.Reflection.BindingFlags,System.Reflection.Binder,System.Object [],System.Globalization.CultureInfo)

在System.Security.Cryptography.CryptoConfig.CreateFromName(System.String,System.Object [])

在System.Security.Cryptography.MD5.Create()

at Microsoft.VisualStudio.ExtensionManager.Shared.TelemetryLogger.EndBlockingProcessTelemetry(Microsoft.VisualStudio.Telemetry.TelemetryScope 1<Microsoft.VisualStudio.Telemetry.OperationEvent>, Boolean, System.Collections.Generic.IEnumerable 1)

在VSIXInstaller.BlockPage.NavigateToInstall(System.Threading.CancellationToken)

异常信息:System.Reflection.TargetInvocationException

at System.RuntimeMethodHandle.InvokeMethod(System.Object,System.Object [],System.Signature,Boolean)

在System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(System.Object,System.Object [],System.Object [])

在System.Delegate.DynamicInvokeImpl(System.Object [])

在System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate,System.Object,Int32)

在System.Windows.Threading.ExceptionWrapper.TryCatchWhen(System.Object,System.Delegate,System.Object,Int32,System.Delegate)

在System.Windows.Threading.DispatcherOperation.InvokeImpl()

在System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(System.Object的)

在System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext,System.Threading.ContextCallback,System.Object,Boolean)

在System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext,System.Threading.ContextCallback,System.Object,Boolean)

在System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext,System.Threading.ContextCallback,System.Object)

在MS.Internal.CulturePreservingExecutionContext.Run(MS.Internal.CulturePreservingExecutionContext,System.Threading.ContextCallback,System.Object)

在System.Windows.Threading.DispatcherOperation.Invoke()

在System.Windows.Threading.Dispatcher.ProcessQueue()

在System.Windows.Threading.Dispatcher.WndProcHook(IntPtr,Int32,IntPtr,IntPtr,Boolean ByRef)

at MS.Win32.HwndWrapper.WndProc(IntPtr,Int32,IntPtr,IntPtr,Boolean ByRef)

在MS.Win32.HwndSubclass.DispatcherCallbackOperation(System.Object)

在System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate,System.Object,Int32)

在System.Windows.Threading.ExceptionWrapper.TryCatchWhen(System.Object,System.Delegate,System.Object,Int32,System.Delegate)

在System.Windows.Threading.Dispatcher.LegacyInvokeImpl(System.Windows.Threading.DispatcherPriority,System.TimeSpan,System.Delegate,System.Object,Int32)

at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr,Int32,IntPtr,IntPtr)

在MS.Win32.UnsafeNativeMethods.DispatchMessage(System.Windows.Interop.MSG ByRef)

在System.Windows.Threading.Dispatcher.PushFrameImpl(System.Windows.Threading.DispatcherFrame)

在System.Windows.Threading.Dispatcher.PushFrame(System.Windows.Threading.DispatcherFrame)

在System.Windows.Application.RunDispatcher(System.Object的)

在System.Windows.Application.RunInternal(System.Windows.Window)

在System.Windows.Application.Run(System.Windows.Window)

在VSIXInstaller.App.Main()

1 个答案:

答案 0 :(得分:0)

好吧,反编译MD5CryptoServiceProvider构造函数会显示以下内容:

public MD5CryptoServiceProvider() {
    if (CryptoConfig.AllowOnlyFipsAlgorithms)
        throw new InvalidOperationException(Environment.GetResourceString("Cryptography_NonCompliantFIPSAlgorithm"));
    // ...
}

因此,基本上,.NET框架明确地检查FIPS合规性并在启用时抛出异常,这是VSIX安装程序无法处理的。

我建议使用Microsoft Connect打开一个错误(包括堆栈跟踪),因为安装程序应该能够处理此异常并继续安装,无论如何。

通过将VSIX安装程序可执行文件的配置文件修改为forcibly disable FIPS compliance,您可以在本地解决此问题,从而启用安装。